Talk:Tiny Encryption Algorithm
Appearance
Efficiency versus simplicity
I'm pondering whether it's better to replace the current version, which is tuned for efficiency, with the simplest possible version, which is probably this:
void encrypt(unsigned long* v, unsigned long* k) { unsigned long delta=0x9e3779b9, sum=0, i; /* a key schedule constant */ for (i=0; i < 32; i++) { /* basic cycle start */ sum += delta; v[0] += (v[1]<<4)+k[0] ^ v[1]+sum ^ (v[1]>>5)+k[1]; v[1] += (v[0]<<4)+k[2] ^ v[0]+sum ^ (v[0]>>5)+k[3]; /* end cycle */ } }
Since storing array entries in registers is a very difficult optimization to perform safely, I suspect compilers will tend to produce slow code for this. On the other hand, I just killed another 3 lines, and it's nicer to look at. Thoughts on this? Derrick Coetzee 01:53, 24 Sep 2004 (UTC)
- I've verified that gcc produces much worse code for this version on both RISC and CISC platforms. I think the version on the page should probably stay. Derrick Coetzee 01:58, 24 Sep 2004 (UTC)
- Do this will not change anything ..