-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 13-03-12 17:34, Matthias Felleisen wrote: > > On Mar 13, 2012, at 12:05 PM, Marijn wrote: > >> (define (sum-hash-of-vectors3 table keys size) (apply vector-map >> + (for/list ((k keys)) (hash-ref table k)))) > > Aren't the last two lines just > > (hash-map table (lambda (key table) table))
Indeed they are mostly the same and using that shaves off another ~5% of the runtime. (define (sum-hash-of-vectors3.1 table keys size) (apply vector-map + (hash-map table (lambda (key val) val)))) There is a slight difference in that the traversal is now implicitly over all keys while with the above it is possible to specify a subset of keys. I used to rely on the possibility to leave non-current items in the table to remember user input in case they wanted to restore the data again, although I have to check whether or not that is still the case. Anyway, thanks for mentioning that. > ;; ------------------------------------------- > > When it comes to performance, always try to trust the compiler > first. It was eons ago that we had much intuition of how to turn > code into machine instructions, and how much these instructions > would cost. This is even true for C now (think pipelines, memory > hierarchies, etc). I try to do that and I try to listen to my betters, but I guess nothing beats being surprised by the compiler. ;P Marijn -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk9gSDMACgkQp/VmCx0OL2zwtgCdG2bcOp5DOLwXJSEdao+lu19+ UG0An04aE8fNMQDpHMguThrSWsPDL6+q =sliE -----END PGP SIGNATURE----- ____________________ Racket Users list: http://lists.racket-lang.org/users