Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Sat, 1 Jul 2006 09:28:50 +0400
From: Solar Designer <>
Subject: Re: intel c++ compiler and john

I wrote:
> > There should be no speedup from the use of another/better C compiler for
> > DES-based crypt(3) hashes ...

On Sat, Jul 01, 2006 at 01:06:37AM +0300, Ali Polatel wrote:
> Yes there is no speedup for DES.
> icc:
> 	Benchmarking: Traditional DES [64/64 BS MMX]... DONE
> 	Many salts:	660608 c/s real, 925221 c/s virtual
> 	Only one salt:	610726 c/s real, 852969 c/s virtual
> gcc:
> 	Benchmarking: Traditional DES [64/64 BS MMX]... DONE
> 	Many salts:	660902 c/s real, 925633 c/s virtual
> 	Only one salt:	604608 c/s real, 846789 c/s virtual

I've got three questions/comments:

1. Why are you building for MMX and not SSE2?

2. Since both the MMX and the SSE2 implementations of bitslice DES are
assembly code not affected by the C compiler choice, you could want to
try "make generic" instead - but you'd need to be building for x86-64,
not plain x86, in order to achieve comparable performance.

3. There appears to be quite some load on the system (this is seen from
the real vs. virtual differences).  Your results would be more accurate
under no load.

> > For MD5- and Blowfish-based crypt(3), there might be a little room for
> > improvement ...

Note that I was speaking of the MD5-based crypt(3) when rebuilt from
plain C code (e.g., with "make generic"), not of raw MD5.  For the
latter, things are somewhat different since the contributed patch does
not bother to use an assembly implementation.  When benchmarking raw MD5
with gcc vs. icc, you've actually compared these two compilers (with
their particular optimization and target CPU selection options):

> icc:
> 	Benchmarking: Raw MD5 [raw-md5]... DONE
> 	Raw:	2685K c/s real, 3750K c/s virtual
> gcc:
> 	Benchmarking: Raw MD5 [raw-md5]... DONE
> 	Raw:	2581K c/s real, 3615K c/s virtual

Yes, not much difference here.

> OpenBSD blowfish is equal in both versions ,

That's because you were benchmarking assembly code.  You should have
used "make generic" to give the compiler a chance to produce better (or
worse) code for your CPU.

Alexander Peslyak <solar at>
GPG key ID: B35D3598  fp: 6429 0D7E F130 C13E C929  6447 73C3 A290 B35D 3598 - bringing security into open computing environments

To unsubscribe, e-mail and reply
to the automated confirmation request that will be sent to you.

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.