Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
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 chilling in the Monastery: (5)
As of 2014-09-17 02:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (56 votes), past polls