Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

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 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 line 0 INIT failed--call queue aborted. # Looks like your test exited with 2 before it could output anything.

Replies are listed 'Best First'.
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.


      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:

      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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://934244]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2017-04-26 14:50 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (482 votes). Check out past polls.