Robert -
I've had a similarly "surprising" result going the other direction: I
re-wrote some J into C and found that the C was slightly slower. In this
case there was no memory-mapped file but the work was being done on large
arrays at-a-time, so J's strengths were evident.
Thanks for sharing your experience,
Devon
On Thu, Oct 2, 2008 at 12:59 PM, Robert Cyr <[EMAIL PROTECTED]> wrote:
> Good afternoon all,
>
> Having this seemingly well written routine in C, I wrote it's equivalent
> in
> J, wishing to estimate the penalty for using J.
>
> I am amazed and a bit mystified to find J nearly twice as fast: on this
> Acer One with Gentoo Linux.
>
>
> - C test: 2.0 secs
> - J first test 1.13 secs
> - J second test: 0.71 secs
>
> >From a 38 Meg file, find all diff rent IP addresses following a given
> label. In this test the number of addresses is about 16000, the required
> different addresses is 7.
>
> Attached is the C routine, and a 20K sample of the 38 meg data file.
>
> Is the J use of mapped files the trick in favor of J? In C the entire file
> is scanned, byte by byte.*
>
>
> J routine:*
> require'jmf'
> require'files dir'
>
> find=: 4 : 0
> NB. x is the label preceding the IP adress,
> NB. y is the file name
> NB. produces a list of different IP adresses.
> deb=. 6!:1 ''
> JCHAR map_jmf_ 'file';y
> nos=. I. x E. file
> n=:(nos+/(0{$x)+i.16){file
> unmapall_jmf_ ''
> a=.'time in secs to read 38 megs, find IP adrs. etc. ',6j2":secs=. (6!:1
> '')-deb
> a=.a,:'diffreent IP adresses'
> a,~.((n i."1 (' ')){."0 1 (n))
> )
>
> findTxt=: 3 : 0
> NB. for testing find.
> fn=:'/media/KINGSTON/logParse/messages.2'
> NB.fn=:'G:\logParse\messages.2'
> txt =.' rhost='
> txt find fn
> )
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
--
Devon McCormick, CFA
^me^ at acm.
org is my
preferred e-mail
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm