HydrogenAudio

Lossless Audio Compression => FLAC => Topic started by: viktor on 2011-11-04 20:34:00

Title: FLAC x64 build
Post by: viktor on 2011-11-04 20:34:00
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:
Title: FLAC x64 build
Post by: viktor on 2011-11-04 20:55:28
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
Title: FLAC x64 build
Post by: forart.eu on 2011-12-01 15:23:13
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 ?
Title: FLAC x64 build
Post by: john33 on 2011-12-01 16:18:32
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.
Title: FLAC x64 build
Post by: viktor on 2011-12-01 17:13:43
Cool !

...and where's binaries ?


"Download:" in first post.
Title: FLAC x64 build
Post by: exx on 2011-12-18 23:24:34
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.
Title: FLAC x64 build
Post by: forart.eu on 2011-12-27 12:08:46
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:

Quote
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 !

Quote from:  link=msg=779491 date=0
Using a 2500k @ 4.2 ghz

OT: Same here, what about 4.2 oc settings ?
Title: FLAC x64 build
Post by: lamedude on 2012-01-02 07:00:41
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?
Title: FLAC x64 build
Post by: Isayama on 2012-02-18 17:10:30
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
Title: FLAC x64 build
Post by: lvqcl on 2012-02-18 17:32:16
I use timer.exe from 7-Benchmark: http://sourceforge.net/projects/sevenmax/files/7-Benchmark/ (http://sourceforge.net/projects/sevenmax/files/7-Benchmark/)
Title: FLAC x64 build
Post by: Martel on 2012-02-19 09:37:05
Quote
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.
Title: FLAC x64 build
Post by: GeorgeFP on 2012-02-19 10:06:14
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)
Title: FLAC x64 build
Post by: kalen3285 on 2012-02-19 15:47:13
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.
Title: FLAC x64 build
Post by: GeorgeFP on 2012-02-19 16:49:44
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)
Title: FLAC x64 build
Post by: antman on 2012-03-29 01:12:26
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.
Title: FLAC x64 build
Post by: denastig31 on 2013-01-12 03:05:25
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
Title: FLAC x64 build
Post by: john33 on 2013-01-12 15:33:41
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