11 ms·
Racket has a lazy module that can let you have lisp+laziness. There's also typed scheme which lets you do lisp+types. Now if only someone could make a lazy type
by kanak 16y ago
Racket has a lazy module that can let you have lisp+laziness. There's also typed scheme which lets you do lisp+types. Now if only someone could make a lazy typed racket.
- neutronicus 16y agoYeah, I've been more of a racketeer than a lisper of late. I like their 'batteries included' philosophy. I don't much like the macro system, though. I might check out typed racket. I don't care too much about lazy evaluation one way or the other, long as all my doubles get multiplied, added, and divided, and it happens fast.
- astrange 16y agoWell, just as general advice, the fastest way to multiply your doubles is to use single-precision SIMD. Does it do that?
- jedbrown 16y agoHuh? Double precision SIMD? SSE2 instructions aren't slower than SSE.
- astrange 16y agoNo, single precision, as in "the fastest way to multiply a double is to use floats instead". I've seen more than enough C programs unnecessarily using double that I wish floating point constants would just be float by default. (Although it seems like clang does something special here, as I don't see many double-to-float conversions in its output.)
- jedbrown 16y agoThen you aren't multiplying doubles, it would be a shame to get a completely wrong answer on an ill-conditioned problem because the implementation disregarded the spec, cf. "the fastest way to process UTF-8 is to truncate it to ASCII", "the fastest RSA encryption is ROT-13". Also note that floats are only faster with packed instructions (often not possible without changing APIs) or when memory bandwidth is an issue.