From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ada bench : count words
Date: Wed, 23 Mar 2005 08:25:03 +0100
Date: 2005-03-23T08:25:00+01:00 [thread overview]
Message-ID: <1ico7d29vnxgh$.70o3jmlo8zmf$.dlg@40tude.net> (raw)
In-Reply-To: OaWdnR5o0rTNKN3fRVn-sg@comcast.com
On Tue, 22 Mar 2005 18:16:16 -0600, tmoran@acm.org wrote:
>>It seems (from the description) that the separators are HT, SP, LF.
>> ...
>
> The "same thing" FAQ says "We prefer plain vanilla programs - after all
> we're trying to compare language implementations not programmer effort and
> skill." So the "Ada version" should match the "Timing Trials" C version,
> which uses a block read, not the line oriented "gets". So
> Ada.Text_IO.Get_Line should not be used. (I grant that probably zero
> people paid attention to this "prefer".)
>
> When I browsed to the "input" page and cut&pasted to save the part that
> appeared to be the input file, the file size was 6102, whereas it's
> apparently supposed to be 6096. Also, if CR is not a separator, then the
> lines consisting of CR-LF only should count CR as a short word, no?
Probably yes. Look at this:
/* -*- mode: c -*-
* $Id: wc-gcc.code,v 1.9 2005/03/21 08:36:50 bfulgham Exp $
* http://www.bagley.org/~doug/shootout/
*
* Author: Waldemar Hebisch (hebisch@math.uni.wroc.pl)
* Optimizations: Michael Herf (mike@herfconsulting.com)
* Further Revisions: Paul Hsieh (qed@pobox.com)
*/
#include <stdio.h>
#include <unistd.h>
#include <limits.h>
#define BSIZ 4096
unsigned long ws[UCHAR_MAX + 1];
unsigned long nws[UCHAR_MAX + 1];
char buff[BSIZ];
int main(void) {
unsigned long prev_nws = 0x10000L, w_cnt = 0, l_cnt = 0, b_cnt = 0,
cnt;
/* Fill tables */
for (cnt = 0; cnt <= UCHAR_MAX; cnt++) {
ws[cnt] = (cnt == ' ' || cnt == '\n' || cnt == '\t') + (0x10000L
& -(cnt == '\n'));
nws[cnt] = !(cnt == ' ' || cnt == '\n' || cnt == '\t') + 0x10000L;
}
/* Main loop */
while (0 != (cnt = read (0, buff, BSIZ))) {
unsigned long vect_count = 0;
unsigned char *pp, *pe;
b_cnt += cnt;
pe = buff + cnt;
pp = buff;
while (pp < pe) {
vect_count += ws[*pp] & prev_nws;
prev_nws = nws[*pp];
pp ++;
}
w_cnt += vect_count & 0xFFFFL;
l_cnt += vect_count >> 16;
}
w_cnt += 1 & prev_nws;
printf ("%d %d %d\n", l_cnt, w_cnt, b_cnt);
return 0;
}
This will count CR as a word.
> Or is the file supposed to be Unix-style, with CRs removed?
Yes if they accept "read", and no if they don't. Usual schism of all
contests of this sort...
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2005-03-23 7:25 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-19 16:22 Ada bench Pascal Obry
2005-03-19 16:55 ` Dr. Adrian Wrigley
2005-03-19 21:32 ` Michael Bode
2005-03-20 9:20 ` Pascal Obry
2005-03-20 9:39 ` Michael Bode
2005-03-20 11:16 ` Pascal Obry
2005-03-20 12:20 ` Dmitry A. Kazakov
2005-03-20 12:32 ` Pascal Obry
2005-03-21 1:42 ` (see below)
2005-03-21 2:24 ` (see below)
2005-03-21 15:00 ` (see below)
2005-03-21 3:54 ` Ed Falis
2005-03-21 12:20 ` Jeff C
2005-03-21 15:18 ` (see below)
2005-03-21 15:24 ` (see below)
2005-03-21 18:56 ` Isaac Gouy
2005-03-21 21:31 ` Randy Brukardt
2005-03-21 22:14 ` Ed Falis
2005-03-21 18:07 ` Pascal Obry
2005-03-20 10:11 ` Adrian Knoth
2005-03-20 10:30 ` Michael Bode
2005-03-21 23:27 ` Georg Bauhaus
2005-03-22 1:16 ` Ada bench : count words Marius Amado Alves
2005-03-22 10:59 ` Dmitry A. Kazakov
2005-03-22 11:57 ` Marius Amado Alves
2005-03-22 12:17 ` Dmitry A. Kazakov
2005-03-22 12:47 ` Marius Amado Alves
2005-03-22 13:08 ` Dmitry A. Kazakov
2005-03-22 13:28 ` Marius Amado Alves
2005-03-22 16:48 ` Marius Amado Alves
2005-03-22 17:34 ` Dmitry A. Kazakov
2005-03-27 20:14 ` jtg
2005-03-27 21:22 ` Dmitry A. Kazakov
2005-03-28 19:54 ` jtg
2005-03-28 20:56 ` Dmitry A. Kazakov
2005-03-29 12:40 ` jtg
2005-03-29 13:00 ` [OT] " Tapio Kelloniemi
2005-03-29 13:47 ` Dmitry A. Kazakov
2005-03-29 15:53 ` Tapio Kelloniemi
2005-03-29 16:17 ` Dmitry A. Kazakov
[not found] ` <k33j419lgei1ui89s26o1dlr9ccf1qe1hd@4ax.com>
2005-04-11 23:04 ` Marius Amado Alves
2005-03-29 13:47 ` Dmitry A. Kazakov
2005-04-01 20:58 ` Georg Bauhaus
2005-04-01 20:18 ` Pascal Obry
2005-03-22 12:53 ` Marius Amado Alves
[not found] ` <f205219321dd18dba878fab16b7cb50d@netcabo.pt>
2005-03-22 13:12 ` Marius Amado Alves
2005-03-23 16:58 ` Isaac Gouy
2005-03-22 13:58 ` Robert A Duff
2005-03-22 16:30 ` Marius Amado Alves
2005-03-22 16:41 ` Tapio Kelloniemi
2005-03-22 17:39 ` Marius Amado Alves
2005-03-22 18:59 ` Dmitry A. Kazakov
2005-03-22 19:08 ` Tapio Kelloniemi
2005-03-22 18:34 ` Georg Bauhaus
2005-03-22 19:32 ` Robert A Duff
2005-03-22 20:04 ` tmoran
2005-03-23 16:55 ` Isaac Gouy
[not found] ` <1820eab50b57f2fe1c4e8e50bb0f4fe5@netcabo.pt>
2005-03-22 22:49 ` Stephen Leake
2005-03-22 22:58 ` Robert A Duff
2005-03-22 23:27 ` Larry Kilgallen
2005-03-23 22:33 ` Robert A Duff
2005-03-24 5:02 ` Larry Kilgallen
[not found] ` <wccpsxqro0c.fsfOrganization: LJK Software <bM40pHW6P2KW@eisner.encompasserve.org>
2005-03-25 1:34 ` Robert A Duff
2005-03-22 12:22 ` Jeff C
2005-03-23 16:48 ` Isaac Gouy
2005-03-23 17:06 ` Isaac Gouy
2005-03-22 19:49 ` tmoran
2005-03-22 21:51 ` Dmitry A. Kazakov
2005-03-23 0:16 ` tmoran
2005-03-23 7:25 ` Dmitry A. Kazakov [this message]
2005-03-22 22:33 ` Marius Amado Alves
[not found] ` <00b362390273e6c04844dd4ff1885ee0@netcabo.pt>
2005-03-23 15:09 ` Marius Amado Alves
2005-03-23 19:00 ` tmoran
2005-03-23 19:30 ` tmoran
2005-03-23 21:38 ` tmoran
2005-03-25 7:30 ` Simon Wright
2005-03-25 9:38 ` tmoran
2005-03-25 16:20 ` Tapio Kelloniemi
2005-03-25 22:18 ` Ada:The High Performance Language for Hyperthreaded and Multicore CPUs; was " tmoran
2005-03-23 19:54 ` Tapio Kelloniemi
2005-03-23 20:39 ` Ada bench : word frequency Marius Amado Alves
2005-03-23 21:26 ` Isaac Gouy
2005-03-24 1:24 ` Marius Amado Alves
2005-03-24 17:23 ` Isaac Gouy
2005-03-24 19:52 ` Martin Dowie
2005-04-11 15:11 ` Marius Amado Alves
2005-03-24 20:16 ` Pascal Obry
2005-03-24 22:54 ` tmoran
2005-04-11 15:38 ` Marius Amado Alves
2005-03-24 21:18 ` Gautier Write-only
2005-04-11 15:32 ` Marius Amado Alves
2005-04-11 23:56 ` Robert A Duff
2005-04-28 4:04 ` Matthew Heaney
2005-04-28 20:40 ` Matthew Heaney
2005-03-23 21:38 ` Ada bench : count words tmoran
2005-03-24 20:19 ` tmoran
2005-03-24 21:00 ` Pascal Obry
2005-03-24 22:54 ` tmoran
2005-03-30 16:08 ` Andre
2005-03-30 16:36 ` Pascal Obry
2005-03-22 22:27 ` Dmitry A. Kazakov
2005-03-23 7:46 ` Pascal Obry
2005-03-23 7:56 ` Dmitry A. Kazakov
2005-03-23 13:38 ` Robert A Duff
2005-03-22 7:05 ` Ada bench Pascal Obry
2005-04-07 20:59 ` David Sauvage
2005-04-07 23:40 ` David Sauvage
2005-04-08 17:11 ` Pascal Obry
2005-04-08 17:39 ` tmoran
2005-04-08 18:49 ` David Sauvage
2005-04-18 19:14 ` David Sauvage
2005-04-19 16:43 ` Matthew Heaney
2005-04-19 23:22 ` David Sauvage
2005-04-20 0:49 ` Matthew Heaney
2005-04-20 4:22 ` Georg Bauhaus
2005-04-20 21:24 ` David Sauvage
2005-04-20 23:06 ` Georg Bauhaus
2005-04-20 9:41 ` Pascal Obry
2005-04-20 11:44 ` Matthew Heaney
2005-04-20 14:47 ` Pascal Obry
2005-04-20 19:26 ` Georg Bauhaus
2005-04-20 19:34 ` Pascal Obry
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox