|
Message-ID: <4BF27EDA.7090809@banquise.net> Date: Tue, 18 May 2010 13:49:46 +0200 From: bartavelle@...quise.net To: john-users@...ts.openwall.com Subject: Re: C compiler generated SSE2 code Le 18/05/2010 01:32, Solar Designer a écrit : > Can you upload it to the wiki, please? > > http://openwall.info/wiki/john/patches Done, but I made a quick git patch. >> gcc 15696 >> icc 32364 >> clang 19644 > > It's a bit weird that gcc performs so poorly here. I am getting > near-perfect SSE2 code for bitslice DES (an unreleased revision of the > source code) with gcc 4.5.0. With properly tweaked compiler options > (primarily to control function inlining), it slightly outperforms the > hand-crafted SSE2 assembly code currently in JtR, in fact. GCC actually performs a tad better when computing 2 groups of 4 passwords at once instead of 3. I did set 3 for 64 bit mode because it was faster with icc. I added printf("round %d\n", round); round++; between each MD5 round to easily differentiate them.. I tweaked the arch.h a bit too, so here are the actual benchs (without printf), and sample compiled code (with printf): gcc : 10944 clang : 18186 icc : 27160 http://bigbox.banquise.net/jtr/gcc-4.3.2 http://bigbox.banquise.net/jtr/clang-103935 http://bigbox.banquise.net/jtr/icc-10.1 This does speak for itself :) The icc does disentangle the whole stuff, but is still faster with 3 loops (only 2 in the sample). Do you mind giving bench of your SSE code with ICC ? Or just share it so that I could try it :) > http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Statement-Exprs.html I didn't knew about them and will investigate further. >> gcc version 4.3.2 (Debian 4.3.2-1.1) > > You could want to try 4.5.0 (build it from source). To be honest, when I found that gcc 4.4.3 performed SIGNIFICANTLY slower than 4.3.2 on this, I just gave up on it. I'll eventually try.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.