Last modified: 2013-07-25 09:00:37 UTC
Hello! I faced a problem, that difference involving many lines fails to be rendered in 60 seconds. The reason turned out to be in overhead in method WordLevelDiff._split (file includes/diff/DairikiDiff.php). $words = array_merge( $words, $m[0] ); $stripped = array_merge( $stripped, $m[1] ); Call of array_merge happens for each line of difference. array_merge is acting too slow, since it involves copying its arguments. I replaced this two lines with: foreach ($m[0] as $k) { $words []= $k; } foreach ($m[1] as $k) { $stripped []= $k; } This results in significant speed-up of difference rendering (from more than 60 seconds to less than one second).
Hi! Thanks for your bug report! You are welcome to use Developer access https://www.mediawiki.org/wiki/Developer_access to submit this change as a Git branch directly into Gerrit: https://www.mediawiki.org/wiki/Git/Tutorial Putting your branch in Git makes it easier to review it quickly. Thanks again! We appreciate your contribution.
https://gerrit.wikimedia.org/r/61983
Thanks, Boris! Looks like Jenkins failed for that patch, plus would be great if you could mention the corresponding bug number in the patch's commit message. See http://www.mediawiki.org/wiki/Gerrit/Commit_message_guidelines
Hey, Andre Klapper! Bug number was mentioned in the patch's commit message. Jenkins-bot now reports build succeeded.