http://www.perlmonks.org?node_id=708990

fireartist has asked for the wisdom of the Perl Monks concerning the following question:

I've not attempted to use Inline::C since my last flirt, 3 years ago (Inline::C - object accessor failure) and my C knowledge is still almost non-existent.
However, I've got some methods which are called hundreds of thousands of times, and I'm trying to get the runtime down - and I'm hoping someone will offer to translate this particular one into Inline::C for me, so I can see if it makes a difference.
I've tried lots of variations of dealing with the SV** returned by hv_fetch() - but to be honest, I don't have a clue what I'm doing!
Here's the original perl method:
(btw - in the c-code, it would be sufficient to just check exists $self->{parent} rather than defined)

sub root { my $self = shift; while ( defined ( my $parent = $self->{parent} ) ) { $self = $parent; } return $self; }