Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: $perl_extension ? require SWIG : require XS;

by sgt (Chaplain)
on Jan 08, 2007 at 13:32 UTC ( #593532=note: print w/ replies, xml ) Need Help??


in reply to $perl_extension ? require SWIG : require XS;

I think personally that knowing a bit of XS is very useful (especially if at some point you want to do core hacking). Still for easy prototyping Inline::C is just great; for packaging into a a module InlineX::C2XS is useful (or at least the ideas are useful to know what and where you eventually need to patch). You can also try InlineX::XS

If you want to interface for speed, I think it is important to know that going in-and-out of perl takes time, and that you probably want to minimize that. There are some tricks out there: one of the most useful was mentioned on the p5p list and is used by Imager. Still the most serious problem is using a contract of the type malloc/free, while wanting automatic (end of scope) "freeing" on the perl side; for this it is probably better to use ideas like that of the Scope::Guard module (and the documentation mentioned therein). Arena-like programming can be ok too: you "malloc" (for each new object) on the C-side and "free" only in bunchs on the perl side (in the end it is probably better to do this via special objects -- thus part of the perl API).

hth --stephan


Comment on Re: $perl_extension ? require SWIG : require XS;

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (10)
As of 2015-07-02 05:00 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 (27 votes), past polls