From: mame@... Date: 2019-01-21T07:11:18+00:00 Subject: [ruby-core:91201] [Ruby trunk Bug#15552] app_aobench.rb is broken Issue #15552 has been updated by mame (Yusuke Endoh). Assignee set to mame (Yusuke Endoh) Status changed from Open to Assigned > And interestingly, TruffleRuby 1.0.0-rc11 renders an image closer to the expected one: Closer :-) This is caused by change of default encoding. The following fixes the issue. It is fortunate that the issue was not caused by wrong optimization. ```diff diff --git a/benchmark/app_aobench.rb b/benchmark/app_aobench.rb index 2bd6acfaf8..13cbc1657d 100644 --- a/benchmark/app_aobench.rb +++ b/benchmark/app_aobench.rb @@ -1,3 +1,5 @@ +# coding: US-ASCII + # AO render benchmark # Original program (C) Syoyo Fujita in Javascript (and other languages) # https://code.google.com/p/aobench/ ``` By the way, the program uses a random number. The effect would be negligible, but I'd like to add `srand(0)` after the above fix. ---------------------------------------- Bug #15552: app_aobench.rb is broken https://bugs.ruby-lang.org/issues/15552#change-76434 * Author: Eregon (Benoit Daloze) * Status: Assigned * Priority: Normal * Assignee: mame (Yusuke Endoh) * Target version: * ruby -v: ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux] * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- Specifically, the image generated is incorrect. When modifying the footer of the benchmark like this: ```ruby alias printf_orig printf def printf *args $fp.printf(*args) end File.open("ao.ppm", "w") do |fp| $fp = fp printf("P6\n") printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT) printf("255\n") Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES) end undef printf alias printf printf_orig ``` Here is the expected image: ![ao_ref](https://user-images.githubusercontent.com/168854/51442303-dd6f8680-1cdb-11e9-89ac-e88773a384c8.png) I get this image with MRI 2.6.0: ![ao_mri_2_6_0](https://user-images.githubusercontent.com/168854/51442292-c7fa5c80-1cdb-11e9-9146-2ec3f447d479.png) And interestingly, TruffleRuby 1.0.0-rc11 renders an image closer to the expected one: ![ao_tr_rc11](https://user-images.githubusercontent.com/168854/51442298-d5174b80-1cdb-11e9-97f6-0b1fc59fcddf.png) I guess this might be both an interpreter bug, and possibly also a bug in the benchmark code. I think every benchmark should have some validation, otherwise it's prone to measure something unexpected like this. -- https://bugs.ruby-lang.org/ Unsubscribe: