MinekPo1 [it/she]

nya !!! :3333 gay uwu

I’m in a bad place rn so if I’m getting into an argument please tell me to disconnect for a bit as I dont deal with shit like that well :3

  • 0 Posts
  • 83 Comments
Joined 2 years ago
cake
Cake day: June 14th, 2023

help-circle

  • I was originally going to comment that differences in performance between JS and TS appear to be most significant in one challenge

    ascii table about that, not screen reader friendly
     ___________________________________________________________________________________________________________________ 
    |lang|_binary_trees___________|_fannkuch-redux_____________|_fasta_____________________|_normalized_________________|
    | JS | 312.14 : 21.349 :  916 |    413.90 :    33.663 : 26 |  64.84 :  5.098 :      30 |     4.45 :    6.52 :  4.59 |
    |_TS_|_315.10_:_21.686_:__915_|__6 898.48_:___516.541_:_26_|__82.72_:__6.909_:_____271_|____21.50_:___46.20_:__4.69_|
    |diff|___+.9%_:__+1.6%_:_+.1%_|_+15_66.7%_:_+14_34.4%_:_0%_|_+21.6%_:_+35.5%_:_+803.3%_|_+3_83.1%_:_+6_08.5_:_+8.1%_|
    

    however, trying to look to see the typescript code, wanting to translate that to type hinted python code, I’ve been unable to find typescript on CLBG, so I’m confused on how they got that data,

















  • Agh I made a mistake in my code:

    if (recalc || numbers[i] != (hashstate[i] & 0xffffffff)) {
    	hashstate[i] = hasher.hash(((uint64_t)p << 32) | numbers[i]);
    }
    

    Since I decided to pack the hashes and previous number values into a single array and then forgot to actually properly format the values, the hash counts generated by my code were nonsense. Not sure why I did that honestly.

    Also, my data analysis was trash, since even with the correct data, which as you noted is in a lineal correlation with n!, my reasoning suggests that its growing faster than it is.

    Here is a plot of the incorrect ratios compared to the correct ones, which is the proper analysis and also clearly shows something is wrong.

    Desmos graph showing two data sets, one growing linearly labeled incorrect and one converging to e labeled #hashes

    Anyway, and this is totally unrelated to me losing an internet argument and not coping well with that, I optimized my solution a lot and turns out its actually faster to only preform the check you are doing once or twice and narrow it down from there. The checks I’m doing are for the last two elements and the midpoint (though I tried moving that about with seemingly no effect ???) with the end check going to a branch without a loop. I’m not exactly sure why, despite the hour or two I spent profiling, though my guess is that it has something to do with caching?

    Also FYI I compared performance with -O3 and after modifying your implementation to use sdbm and to actually use the previous hash instead of the previous value (plus misc changes, see patch).