nickbabcock/Pfim

Benchmarks

Krakean opened this issue · 4 comments

@nickbabcock
Hi
About benchmarks on Pfim webpage.
Would be nice also to have memory consumption compare, and I think would be useful to add big dds image to compare (like BigUnitsA_HQ.dds that I sent you)

I ran the benchmarks with memory diagnostics and it looks like the libraries that use native code (maybe through P/Invoke, I'm not necessarily sure) are not accurate (memory usage is under reported). Especially DevILSharp. Somehow diagnostics show only 128-192 bytes allocated, which is weird as the image is way larger than 192 bytes. So I'm not sure what to make of it.

Pfim's memory usage is 8 to 32bit per pixel (depending on encoding) + 32kb buffer internal reading (but is discarded after reading).

The only libraries that incurred gen1 and/or gen2 gc sweeps are StbSharp, DevILSharp, and FreeImage.

@nickbabcock then may be compare only c#-libraries memory consumption? Which obvious in my opinion that you choose between c#-solutions

Ran the benchmark code and generated a couple graphs. First one shows the total allocations for each solution for each image. Since this is skewed for larger images, I've also included a relative graph. Conclusion: Pfim allocates the least.

total-memory-alloc

relative-memory-alloc

@nickbabcock good numbers :)