Package: libjpeg-turbo-progs
Version: 1:2.1.5-4

For the switch “-dct float”, the man page of djpeg says, “Use floating-point 
DCT method [legacy feature]. The float method does not produce significantly 
more accurate results than the int method, and it is much slower. The float 
method may also give different results on different machines due to varying 
roundoff behavior, whereas the integer methods should give the same results on 
all machines.”

To test the speed, grab a large JPEG file, say, 
https://upload.wikimedia.org/wikipedia/commons/6/6d/The_Garden_of_Earthly_Delights_by_Bosch_High_Resolution.jpg.
 Then run:

$ for i in $(seq 1 4); do time --portability djpeg -dct fast -dither none -outfile 
/dev/null The_Garden_of_Earthly_Delights_by_Bosch_High_Resolution.jpg; done 
2>&1 | grep user
user 17.18
user 19.18
user 19.47
user 19.27
$ for i in $(seq 1 4); do time --portability djpeg -dct int -dither none -outfile 
/dev/null The_Garden_of_Earthly_Delights_by_Bosch_High_Resolution.jpg; done 
2>&1 | grep user
user 19.87
user 19.55
user 19.50
user 19.06
$ for i in $(seq 1 4); do time --portability djpeg -dct float -dither none -outfile 
/dev/null The_Garden_of_Earthly_Delights_by_Bosch_High_Resolution.jpg; done 
2>&1 | grep user
user 21.01
user 22.07
user 22.02
user 21.78

These tests were executed on an Intel(R) Xeon(R) W-2235 CPU @ 3.80GHz slowed 
down to 1.2 GHz; 2 out of 12 kernels were free for this job (this is what we 
had at our disposal; the reasons for such a configuration are unrelated to this 
bug report).

“-dct float” was only ≈ 15% slower than “-dct fast” and only ≈ 11% slower than 
“-dct int”. The adverb “much” may or may not have been right in the past 
(though “much” is vague, I'd think of 2x-3x the time), but now it seems that 
this wording no longer reflects the reality.

Feel free to test the speed on big JPEG files of your choice and somewhat 
modern hardware. Request: replace “much slower” with “slightly slower 
(historically: much slower)” in the man page. Synonymous wordings: “lightly 
slower (historically: much slower)” and “marginally slower (historically: much 
slower)”.

I'm also surprised that this feature is called “legacy”. It's from the same era 
as the JPEG format itself, so, compared to the other two methods (fast and 
int), it's NOT outdated in the strict sense of the word, viz., not out of date, 
relative to the other two methods. Floating-point operations are generally more 
sensitive to hardware, and therefore some tasks might require `-dct int` for 
reproducibility on other hardware (whereas other tasks, including all mine so 
far, wouldn't need reproducibility on other hardware), but the reproducibility 
requirement is orthogonal to the relative age of the method and is therefore 
not a reason to call a method “legacy”—otherwise lots of floating-point 
mathematics software, beginning with simple calculators, would have to carry 
the misleading label “legacy”, too. Therefore, the request: drop “ [legacy 
feature]”.

Reply via email to