From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,f03ffdf470e3c559 X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news2.google.com!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!cyclone1.gnilink.net!gnilink.net!nx01.iad.newshosting.com!newshosting.com!198.186.194.249.MISMATCH!transit3.readnews.com!news-xxxfer.readnews.com!transit4.readnews.com!news-out.readnews.com!postnews3.readnews.com!not-for-mail Date: Tue, 28 Oct 2008 07:35:37 -0400 From: "Peter C. Chapin" User-Agent: Thunderbird 2.0.0.17 (Windows/20080914) MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Interesting performance quirk. References: <4903c066$0$28676$4d3efbfe@news.sover.net> <49045079$0$28711$4d3efbfe@news.sover.net> In-Reply-To: X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Message-ID: <4906f908$0$5781$4d3efbfe@news.sover.net> Organization: SoVerNet (sover.net) NNTP-Posting-Host: 863f9bca.news.sover.net X-Trace: DXC=B4b`W_ko\l@b5X7jJYA1FBK6_LM2JZB_CQ6?=\9E@2_M:WUUlR<856OT00\gJBbcRBJE=VI2lf@>E X-Complaints-To: abuse@sover.net Xref: g2news1.google.com comp.lang.ada:2510 Date: 2008-10-28T07:35:37-04:00 List-Id: Martin wrote: > Any tasking involved?... No, it's just one task. The program could easily be written with multiple tasks since I'm just using ECB mode (so I could encrypt different parts of the array in parallel). However, my intent is not to make the benchmark program as fast as possible but rather measure the encryption performance of my implementation. I want to avoid doing things that would obscure that. By themselves the timings mean very little; it's the comparisons that are interesting. In further developments... I wrote a version of the benchmark program in C that uses OpenSSL's Blowfish implementation. The program is the "same" in that it creates the same amount of data and processes it in the same way. The only significant difference is that it calls into OpenSSL. It's quite a bit faster. Right now I get Windows XP Laptop (GNAT GPL 2008 for the Ada, Cygwin gcc for the C) ----- My Library => 11 MB/s (with -O2 option and no debugging support) OpenSSL => 65 MB/s (Wow!) SUSE Linux in a VM on the same box ----- My Library => 25 MB/s (odd) OpenSSL => 65 MB/s (now this makes sense at least) I'm expecting my code to be slower because a) It is Ada and there are probably some extra run time checks, and b) I just wrote this thing and I haven't yet tried to tweak it for performance. The performance ratio on the Linux system between my immature Ada code and the much more mature OpenSSL seems pretty reasonable to me. I'm less content with the ratio in the Window XP environment. On the other hand: on the Blowfish home page Schneier warns about a common implementation error that greatly reduces the security of the algorithm. I thought, "I better take a look at that." It turned out that the problem was related to mixing signed and unsigned characters (in C code, of course). I thought, "Hey, I don't have this problem and I didn't even have to try!" :-) I tried running gprof over my code to see what I could learn, but I don't know how to use that tool very well yet so I didn't learn much. I discovered that a certain procedure is called a HUGE number of times, but that's not unexpected considering where it's used. It's a small procedure so I might try inlining it. Anyway I'm having fun and considering that this is a hobby project that's what matters. :-) Peter