As discussed here many times, PNGOUT's search space for a given png is enourmous and it is not possible to try all combinations. As a result, PNGOUT must select a less than comprehensive strategy to complete in a reasonable time.
Have you considered having a MAXCOMPUTE time as a criteria to end searching?
For example I might want PNGOUT to work 1 hour on a given .PNG and then at the end of that time, simply write back to disk the best strategy found within that time?
Side Question: I know you are a Microsoft guy, but have you considered testing using the Intel C Complier 8.x (now). Some benchmarks show that it can consistently and significantly beat Microsoft's Compilier on calculation bound tasks? (like PNGOUT). Intel C compiler are free for evaluation and non-commercial projects.
Awesoken at
Have you considered having a MAXCOMPUTE time as a criteria to end searching?
No. If you want fast compression with reasonble file size, then I suggest you use the other PNG compression utilities, such as OPTIPNG or ADVPNG.
have you considered testing using the Intel C Complier 8.x (now). Intel C compiler are free for evaluation and non-commercial projects.
I have never used the Intel compiler. It sounds enticing, although what PNGOUT really needs is a better algorithm. If using a different compiler can give a 50% speedup, that's great. Still, it's not going to solve the problem of PNGOUT taking all day on some images. As I've mentioned before, when I'm satisfied with the algorithm in C, I will write the necessary parts in assembler - in which case the compiler won't make any difference.
BarrenSoul at
Kens a genius :) compilers just put stuff into ASM and remove redundancies for us but if ken puts the stuff directly into ASM it's like he says, the compiler can't make it faster then an expert ASM coder :D
masterlee at
Re: PNGOUT with time limit
Anonymous said
Side Question: I know you are a Microsoft guy, but have you considered testing using the Intel C Complier 8.x (now). Some benchmarks show that it can consistently and significantly beat Microsoft's Compilier on calculation bound tasks? (like PNGOUT). Intel C compiler are free for evaluation and non-commercial projects.
AS you can see in this graph wich shows time in MS, Intel C++ is not faster at all.
http://www.tommti-systems.de/main-Dateien/reviews/languages/perf.gif The used system was:
AMD Athlon XP 2200+
1024 MB DDR 266
VIA KT266A
Windows XP Prof. + SP1
Cryoburner at
PNGOUT with time limit
Of course, this test was performed on an Athlon, so you can't really tell how the results would compare on an Intel based system. My guess is that Intel has their compiler optimize programs to run slightly better on their own brand of processors. My current system is built around an Athlon 64 3500+ anyway, so I wouldn't care about Intel-specific optimizations. As Ken said, the compiler won't make any noticeable difference once he's rewritten the inner loops in assembler, anyway.
Anonymous at
Re: PNGOUT with time limit
is there any way PNGOUT could benefit from multi-threading?
I don't know of any obvious or simple way to allow PNGOUT to benefit from multi-threading. For now, you can always run multiple instances of PNGOUT if you need to compress multiple files : P
Yes, I'm familiar with HT optimization. In fact, my EVALDRAW program takes advantage of it in certain graphing modes. In EVALDRAW, just press F5 to enable HT (or find it in the menus).
Edit: Obviously this is my writing (Awesoken) ... I have no idea how my username got zapped...
plugwash at
masterlee said
Anonymous said
Side Question: I know you are a Microsoft guy, but have you considered testing using the Intel C Complier 8.x (now). Some benchmarks show that it can consistently and significantly beat Microsoft's Compilier on calculation bound tasks? (like PNGOUT). Intel C compiler are free for evaluation and non-commercial projects.
AS you can see in this graph wich shows time in MS, Intel C++ is not faster at all.
http://www.tommti-systems.de/main-Dateien/reviews/languages/perf.gif The used system was:
AMD Athlon XP 2200+
1024 MB DDR 266
VIA KT266A
Windows XP Prof. + SP1
isn't the intel compiler known to create code that deliberately ignores the feature bits for non-intel processors and puts them through the lowest fallback codepaths?