I can't believe they took down my joke post.
Quote from: eahm on 21 October, 2013, 02:34:09 PMI can't believe they took down my joke post.Haha, it's okay, I saw it...
The MMX version is significantly faster when the sample data requires the full-resolution apply_weight macro.
Even if 64bit executable doesn't run fast, 64bit DLL might be useful for apparent reason.
On my Core2 9300, 64-bit encoder is noticeably slower than 32-bit one for 24-bit WAV files. As far as I can see MSVS forbids MMX intrinsics for 64-bit code, and, from a comment in pack.c:QuoteThe MMX version is significantly faster when the sample data requires the full-resolution apply_weight macro.When I reversed the definition of apply_weight (so it simply uses 64-bit arithmetics) 64-bit encoder became noticeably faster than now, 32-bit encoder with MMX disabled - slightly faster, 32-bit with MMX enabled - no difference.
That's weird. On my system they're both somewhat slower using the 64-bit math. Are you compiling with VS 2008? I noticed that VS 2010 has an all new compiler, although I haven't read anywhere that it generates significantly different code.
MSVS 2010 and 2012. I compiled the sources, then changed "#if 1" to "#if 0" in the definition of apply_weight and compiled again. Encoding time was reduced from 43 sec to 35 sec (64-bit exe, 24-bit stereo WAV, -hh option).
Interesting. How do those compare to the official 64-bit version?
If they're faster, I might like to get a copy of the binaries from you to compare myself.
(original folder: original code compiled with VS 2010; modified folder: code with alternative definition of apply_weight, also compiled with VS2010).
Tiny gripe, I'm sorry I didn't catch it before: "wavpack --version" shouldn't exit with code 1 (or any code other than 0, i.e. "success"). No biggie.
I also see that requesting the "help" display does the same thing
Well, I see the same thing with these as with mine: the modified 64-bit version is about 4-5% slower than the unmodified, with both -hh and -x4. Very weird, because it seems our CPUs don't seem that different. And for 64-bit, the compiler doesn't make any appreciable difference.
X | run 1 | run 2 |official 32 | 38.23s | 38.37s |official 64 | 40.37s | 40.34s |original 32 | 35.21s | 35.27s |original 64 | 40.39s | 40.28s |modified 32 | 36.59s | 36.34s |modified 64 | 37.94s | 37.88s |icc-mmx 32 | 37.76s | 37.77s |icc-mmx 64 | 28.50s | 28.43s |
X | run 1 | run 2 |official 32 | 37.27s | 37.34s |official 64 | 36.61s | 36.81s |original 32 | 36.88s | 36.77s |original 64 | 36.55s | 36.53s |modified 32 | 38.54s | 38.62s |modified 64 | 36.31s | 36.43s |icc-mmx 32 | 42.49s | 42.60s |icc-mmx 64 | 29.37s | 29.56s |