Hi,
I have applied most advice I got here and pushed a new version of crypto.aes:
https://github.com/kerneis/factor/commits/aes
(beware if you pulled the previous one, the branch has been rebased).
I have an issue when I USE: the vocabulary: it fails because I use `>byte-array`
in `CONSTANT: inv-sbox`, but `>byte-array` has not been compiled yet. Reloading
the vocabulary works, though, so I'm a bit confused; it looks like some kind of
race-condition.
On Mon, May 27, 2013 at 09:51:04AM -0700, John Benediktsson wrote:
> Nice! Have you had a chance to look at performance?
Since premature optimization is the root of all evil, I benchmarked and profiled
each of my commits (`run-bench` and `[ aes-128-encrypt ] profile-bench`).
You can find the results below, running on an Intel Core2 Duo L9400 @ 1.86GHz.
Most recent commits are at the top. Results are the number of random blocks
encrypted and decrypted by second (higher is better), with a pre-expanded,
constant random key.
An AES block is 16 bytes, so the current implementation encrypts at ~124kB/s,
and decrypts at ~84kB/s. Note that decryption is necessarily slower than
encryption because of the way gf-mult is implemented: `a b gf-mult` is
proportionnal to the log(b), and decryption involves larger b than encryption.
commit enc dec (block/s)
--------------------------------------------------------
* type explicitly elementary operations 7752 5246
Overall speedup, wrt. "use constants":
× 1.7.
* specialized flip for blocks 5510 4312
This decreases performance slightly, but
is necessary for further static typing
which improves it a lot (see next commit).
* coerce nxtimes result to byte-array 6470 4886
* type nxtimes explicitly 5001 3470
* type gf-mult explicitly 4801 3220
* use byte-arrays for words 4330 2902
Naive use of byte-arrays decreases
performance.
* avoid flip in unit tests 4437 2855
* remove unused T- and D-tables 4445 2855
Cleanup commits, no impact on
performance.
* use constants 4424 2939
Decryption is greatly improved because
inv-sbox used to be recomputed on each
use (speedup: × 8.2).
* better word names and stack effects 4470 370
This drop of encryption performance is
strange, because there is no change in
the code. Probably not significant.
* add benchmark 4500 360
* feature-complete inefficient implementation ---- ----
Best regards,
--
Gabriel
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk