Hi devs, While "Looking to improve performance of svn annotate" [1], I found that the current blame algorithm is mainly client-side bound, and that most of its time is spent on "svn diff" (calls to svn_diff_file_diff_2 from add_file_blame in blame.c). Apart from avoiding to build full-texts and diffing them altogether (which is subject of further discussion in [1]), I'm wondering if optimization of "svn diff" wouldn't also be an interesting way to improve the speed of blame.
So the main question is: is it worth it to spend time to analyze this further and try to improve performance? Or has this already been optimized in the past, or is it simply already as optimal as it can get? I have no idea really, so if anyone can shed some light ... Gut feeling tells me that there must be room for optimization, since GNU diff seems a lot faster than svn diff for the same large file (with one line changed) on my machine [1]. But maybe svn's diff algorithm is purposefully different (better? more accurate? ...) than GNU's, or there are specific things in the svn context so svn diff has to do more work. Any thoughts? -- Johan [1] http://svn.haxx.se/dev/archive-2010-08/0408.shtml