IIRC, there's been ongoing efforts to remove SRFI-1 from core; which may explain your observations regarding Master.
Perhaps you should consider asking Chicken Hackers? -Dan Sent from my BlackBerry 10 smartphone. Original Message From: Jörg F. Wittenberger Sent: Wednesday, January 13, 2016 3:38 AM To: chicken-users Subject: [Chicken-users] Need help to figure out where this strange performance impact is coming from Hi Chickeneers, yesterday I found that simply having a (use mailbox) in some code had a huge impact (more than a factor of 3) at the performance of the resulting executable. Without using the mailbox stuff at all. Meanwhile I figured out that this has nothing at all to do with the mailbox egg. But _all_ with the use of srfi-1. But how is this possible? Attached some test code. As I ran into it from mailbox I prepared a stripped down version of it to play with. Towards the end of the file there is a (use srfi-1) which makes all the difference. So far I found (compiling the code with -O5 but similar things happen with less aggressive optimization): a) Using chicken 4.9.1 there is absolutely no difference. Using srfi-1 or not I get roughly 100 messages passed per ms on my machine. (But I have to include the forced gc; see comment in the code.) b) A slightly different version which avoids allocations in the queue runs without the forced gc and yields about 160 ms^-1 on chicken 4.9.1 Again no difference whether or not I (use srfi-1) anywhere. Now the interesting bits: c) On master (built almost two weeks ago) I get - when (use srfi-1) is included - about 180 ms^-1. Those ~5% faster sound about right to me. d) Comment out the (use srfi-1) at line 163 and it goes down to about _50_ per millisecond! e) The same happens for the alternative, allocation free version (not attached), which uses vectors instead of pairs. Speculating: The code I wrote has nothing to do with the difference. But I'm confused. Neither scheduler.scm nor srfi-18 seem to have any dependency on srfi-1. Also srfi-1 seems not to overwrite any global bindings. Should we simply always (use srfi-1) if we also (use srfi-18). Looks like a workaround, but not like the right thing to do. How could I boil this down to the real reason? Best /Jörg _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
