Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^3: Exploring Inline::C (Generating primes)

by wazoox (Prior)
on Oct 27, 2011 at 21:07 UTC ( #934244=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Exploring Inline::C (Generating primes)
in thread Exploring Inline::C (Generating primes)

I've recompiled everything from the start, and it works somewhat better, though not very well in the end :) The c++ code goes well enough, but the Inline::C fails miserably:

perl test.pl 1..3 /usr/local/bin/perl /usr/local/lib/perl5/5.14.0/ExtUtils/xsubpp -type +map /usr/local/lib/perl5/5.14.0/ExtUtils/typemap test_pl_97a8.xs > +test_pl_97a8.xsc && mv test_pl_97a8.xsc test_pl_97a8.c cc -c -I/home/emmanuel -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasin +g -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D +_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" - +fPIC "-I/usr/local/lib/perl5/5.14.0/i686-linux-thread-multi/CORE" t +est_pl_97a8.c test_pl_97a8.xs:6:3: erreur: directive de pré-traitement #Here invalid +e test_pl_97a8.xs:33:3: erreur: directive de pré-traitement #Cross inval +ide make: *** [test_pl_97a8.o] Erreur 1 A problem was encountered while attempting to compile and install your + Inline C code. The command that failed was: make > out.make 2>&1 The build directory was: /home/emmanuel/_Inline/build/test_pl_97a8 To debug the problem, cd to the build directory, and inspect the outpu +t files. at test.pl line 0 INIT failed--call queue aborted. # Looks like your test exited with 2 before it could output anything.


Comment on Re^3: Exploring Inline::C (Generating primes)
Download Code
Re^4: Exploring Inline::C (Generating primes)
by davido (Archbishop) on Oct 27, 2011 at 22:43 UTC

    That's not so miserable. ;) In fact, it's pretty much how any error message looks with Inline::C.

    Open the .xs file in the directory pointed to in the error message. Find the line mentioned in the error message (lines 6 and 33, I think). There is a problem somewhere nearby. Don't edit the XS file, edit the same line (but different line number) in your Perl/C source file.


    Dave

      OK, I see : the perl comments are included in the C source, and of course a line beginning with a # has unexpected effects there :) So adding a // in front of lines 137 and 164 saves the day:

      perl test.pl
      1..3
      ok 1 - The first 501 primes are found from 1 to 3571.
      ok 2 - external_cpp() function gives same results as basic_perl().
      ok 3 - inline_c() function gives same results as basic_perl().
      # 
      # Comparing basic_perl(), external_cpp(), and inline_c() for
      # 5 seconds searching 150000 integers.
      # 
                      Rate   basic_perl external_cpp     inline_c
      basic_perl   0.984/s           --         -90%         -96%
      external_cpp  9.45/s         860%           --         -58%
      inline_c      22.6/s        2197%         139%           --
      # 
      # I love it when a plan comes together.
      # 
      

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://934244]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2015-07-07 03:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (87 votes), past polls