diff options
author | syber <syber@crazypanda.ru> | 2014-12-07 03:26:04 +0300 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2014-12-06 19:44:07 -0800 |
commit | c6afe6664edd0f72ba320c7d17ab247876849084 (patch) | |
tree | cf75a38dfb4ee4b11a047b4dd65b50a05fcf2fcd /embed.fnc | |
parent | 15c41403d2d0c2e464b1c4bf8497d45d28917282 (diff) | |
download | perl-c6afe6664edd0f72ba320c7d17ab247876849084.tar.gz |
gv_fetchmeth_sv now supports SV shared hashes
gv_fetchmeth_internal added, which receives method name
both as SV and const char. Now it calls hv_common instead
of hv_fetch.
gv_fetchmeth_pvn and gv_fetchmeth_sv are now just wrappers
for gv_fetchmeth_internal
Result: x2 speedup for gv_fetchmeth_sv new SV is a shared hash
BEFORE
PVN - 28.5 Mcalls/s
SV SHARED HASH - 26 Mcalls/s
AFTER
PVN - 29.4 Mcalls/s
SV SHARED HASH - 51 Mcalls/s
Diffstat (limited to 'embed.fnc')
-rw-r--r-- | embed.fnc | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -546,8 +546,10 @@ p |void |gv_setref |NN SV *const dstr|NN SV *const sstr Apd |HV* |gv_stashpv |NN const char* name|I32 flags Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 flags #if defined(PERL_IN_GV_C) -i |HV* |gv_stashpvn_internal|NN const char* name|U32 namelen|I32 flags -i |HV* |gv_stashsvpvn_cached|NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags +i |HV* |gv_stashpvn_internal |NN const char* name|U32 namelen|I32 flags +i |HV* |gv_stashsvpvn_cached |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags +i |GV* |gv_fetchmeth_internal |NULLOK HV* stash|NULLOK SV* meth|NULLOK const char* name \ + |STRLEN len|I32 level|U32 flags #endif Apd |HV* |gv_stashsv |NN SV* sv|I32 flags Apd |void |hv_clear |NULLOK HV *hv |