{"action":"opened","issue":{"url":"https://api.github.com/repos/rakudo/rakudo/issues/1676","repository_url":"https://api.github.com/repos/rakudo/rakudo","labels_url":"https://api.github.com/repos/rakudo/rakudo/issues/1676/labels{/name}","comments_url":"https://api.github.com/repos/rakudo/rakudo/issues/1676/comments","events_url":"https://api.github.com/repos/rakudo/rakudo/issues/1676/events","html_url":"https://github.com/rakudo/rakudo/issues/1676","id":310257466,"number":1676,"title":"A \"crossover\" benchmark","user":{"login":"JJ","id":500,"avatar_url":"https://avatars3.githubusercontent.com/u/500?v=4","gravatar_id":"","url":"https://api.github.com/users/JJ","html_url":"https://github.com/JJ","followers_url":"https://api.github.com/users/JJ/followers","following_url":"https://api.github.com/users/JJ/following{/other_user}","gists_url":"https://api.github.com/users/JJ/gists{/gist_id}","starred_url":"https://api.github.com/users/JJ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JJ/subscriptions","organizations_url":"https://api.github.com/users/JJ/orgs","repos_url":"https://api.github.com/users/JJ/repos","events_url":"https://api.github.com/users/JJ/events{/privacy}","received_events_url":"https://api.github.com/users/JJ/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-03-31T17:30:43Z","updated_at":"2018-03-31T17:30:43Z","closed_at":null,"author_association":"NONE","body":"## The Problem\r\n\r\nCrossover is an operation where two strings (chromosomes) interchange a part (genes), after randomly generating the crossover points. \r\n\r\nI have been benchmarking several languages for this, and the Perl 6 performance is the worst. [This is the fastest implementation so far](https://github.com/JJ/perl6eo/blob/master/xover.p6), which takes ~ 8 seconds for the smallest size. As a comparison, [this one](https://github.com/geneura-papers/2016-ea-languages-PPSN/blob/master/c%2B%2B/xover.cc) in C++ takes 0.27911 for the smallest size. It degrades with size, but for instance\r\n\r\nC++, 2048, 29.8744\r\nperl6-BitVector,2048,236.6089409\r\n\r\n## Expected Behavior\r\n\r\nA bit of improvement would be great. Even if it's a different data structure. That data structure has proved the fastest for other operations I need, but I'd happily consider them. \r\n\r\n## Actual Behavior\r\n\r\nVery slow performance in every part of the operation, from random number generation to splicing.\r\n\r\n## Steps to Reproduce\r\n<!-- Provide a set of steps to reproduce the problem.\r\n     If the program unexpectedly crashes, please run it with\r\n     `perl6 --ll-exception` and provide the produced output. -->\r\n\r\nTest the code linked above with 2018.03\r\n\r\n## Environment\r\n* Operating system: \r\n\r\nUbuntu 14.04.5\r\n\r\n* Compiler version (`perl6 -v`): \r\n\r\n2018.03 with MoarVM 2018.03\r\n"}}
{"actor":{"display_login":"JJ"}}