My main concern was fixing the warnings (~150, mostly vsize vs. int), and
getting to know the codebase a bit.
However, during this procedure I have changed other things also, typedef-ed
enums, empty else statements, string repeating, unreferenced parameter names
and some random cosmetics, like code and comment spacing etc. Please check for
errors.
I've also changed the sign and comparison code from the branching "if ()
return else if return else ..." to the non-branching "return (b < a) - (a <
b)", which was 5 and 30% faster in my tests.
I have also changed a few "*0.5" to "/2.0", since the generated code is
the same (just checked it, same speed also, of course), and I think a logical
division should be marked as a division (and both were used in the code in a
-seemingly- random way).
A few questions(haven't searched through the mails):
* Why are many lines wrapped at 60-80 (while some at 100)? This makes
reading the code hard, console mode wrapping seems deprecated to me (especially
on my 24'' monitor). I think that 95-110 chars/line are better in most cases
then wrapping @ 80.
* Are unsigned variables really necessary here? (I guess the vector's
length() makes them necessary)
* and double precision and i64? Is that level of precision required
over the speed gain? (it might be, I'm just askin' if it was considered)
* How about SSE optimization? There might be lots of data with same
instructions. The diff is quite big (~2700 lines and ... 99 files ... how
did I do that??), but most of the warnings (except for the missing images in
the docs, some deprecated makefile warnings and some strange lexer warnings)
will go away.
http://codereview.appspot.com/1724041/show
Lőrinc
ps. this patch includes the previous one, posted as an attachment.
Please tell, if something was inappropriate.
_______________________________________________
lilypond-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-devel