I saw a benchmark on Phoronix regarding FLAC performance:
(http://www.phoronix.com/data/img/results/ubuntu_natty_pae64/18.png)
So I became curious about it on Windows. The results? A bit disappointing, only about 3-5% increase in performance, probably because of the lack of _asm on x64 (http://msdn.microsoft.com/en-us/library/wbk4z78b.aspx?ppud=4). If the x86 build is compiled without using NASM, it gets about 10% slower. At least on my AMD Fusion A6-3500. Either way, here it is for your convenience!
Download:- Microsoft Visual C++ 2010 SP1 Redistributable Package (x64) (http://www.microsoft.com/download/en/details.aspx?id=13523)
- FLAC 1.2.1 x64 (http://code.google.com/p/xchat-wdk/downloads/detail?name=FLAC%201.2.1%20x64.zip)
results for my reference, possibly more to come soon:
- MSVC x86: 68s
- MSVC x86 NASM: 60s
- MSVC x64: 57s
- MINGW x86: 70s
- MINGW x64: 57s
results for my reference, possibly more to come soon:
- MSVC x86: 68s
- MSVC x86 NASM: 60s
- MSVC x64: 57s
- MINGW x86: 70s
- MINGW x64: 57s
Cool !
...and where's binaries ?
I also did some testing with an ICL 12.1 x64 compile and came to much the same conclusion. I can make it available if anyone is interested, but the gains aren't worth shouting about.
Cool !
...and where's binaries ?
"Download:" in first post.
Using a 2500k @ 4.2 ghz
Tested against the FLAC version bundled with db Poweramp. x64 is perhaps 1-2 seconds faster per album. Within margin of error, imo. Reading from a hard drive, writing to a RAM disk. FLACCL is still 4x faster with a GTX470.
Dunno if this can help, but i recently had a talk with Eric Gur (Processor Client Application Engineer @ Intel Corp.) about MT libraries, here's his answer:
For threading I recommend using Intel's free TBB library. It's very fast, cross platform, simple to use and has an important feature - malloc replacement.
I used it in a previous project - 1M lines of code, multithreaded application on Linux x64. Just the malloc replament boosted performance by 3x without changing any code (1 line in the makefile).
Dunno if can help, but could be really interesting !
Using a 2500k @ 4.2 ghz
OT: Same here, what about 4.2 oc settings ?
Thanks for the tip. How to do it is at section 10.2 on page 63 (http://threadingbuildingblocks.org/uploads/81/91/Latest%20Open%20Source%20Documentation/Tutorial.pdf).
Can flac.exe show how long it takes or are you using another program to measure speed?
I can make it available if anyone is interested
I'd like to test your compile John, is it possible to make it available on RW (I found there your ICL 11.1 32 bit compile) or send it directly here? Is it optimized for any kind of processor instruction set (SSE2, SSE3...), or otherwise how can I get info on how to do it (I run an Intel Core 2 Duo)? I'll give a try at forart.eu and lamedude method (thanks for the link to the tutorial)
Same question than lamedude: is there any community preferred tool for measuring flac encoding/decoding speed, or we should just use CLI/foobar's log info?
Many thanks.
Reasons for edit: typos and grammar
I use timer.exe from 7-Benchmark: http://sourceforge.net/projects/sevenmax/files/7-Benchmark/ (http://sourceforge.net/projects/sevenmax/files/7-Benchmark/)
For threading I recommend using Intel's free TBB library. It's very fast, cross platform, simple to use and has an important feature - malloc replacement.
I used it in a previous project - 1M lines of code, multithreaded application on Linux x64. Just the malloc replament boosted performance by 3x without changing any code (1 line in the makefile).
Malloc replacement in a multi-threaded application is only going to help in case all the threads are doing mallocs/frees repeatedly/in parallel (the normal heap is a serialization/choke point). I'm not sure why an encoder would need to do that when it could have most of the buffers "static" (malloc'd upon startup, freed upon exit).
It's great for server code with lots of messaging and modeled dynamic data types.
For a x64 multicore FLAC encoder, see here: http://www.hydrogenaudio.org/forums/index....showtopic=76193 (http://www.hydrogenaudio.org/forums/index.php?showtopic=76193)
For a x64 multicore FLAC encoder, see here: http://www.hydrogenaudio.org/forums/index....showtopic=76193 (http://www.hydrogenaudio.org/forums/index.php?showtopic=76193)
Where can I download this? The links I saw on the first post are dead. Thanks.
The download link is http://www.thinkmeta.de/download/fpStream_1_0_0_23.7z (http://www.thinkmeta.de/download/fpStream_1_0_0_23.7z)
I also did some testing with an ICL 12.1 x64 compile and came to much the same conclusion. I can make it available if anyone is interested, but the gains aren't worth shouting about.
I'd like a copy. I don't see slight gains as being a reason not to use it.
Hi, my question is not consirned with FLAC x64 build but i guess you guys might help me.
I have a flac source code v1.2.1
I am trying to build the libflac library static for C using VS2010
can i build the library without the the support of OGG and NASM?
what are the steps?
Thank you
-denver
Hi, my question is not consirned with FLAC x64 build but i guess you guys might help me.
I have a flac source code v1.2.1
I am trying to build the libflac library static for C using VS2010
can i build the library without the the support of OGG and NASM?
what are the steps?
Thank you
-denver
From memory, remove 'FLAC__HAS_OGG' and change 'FLAC__HAS_NASM' to 'FLAC__NO_ASM'.
HTH