Igor V Belousov <i...@belousovv.ru> writes: > I'm not tested benchmark in c code. I tested function 'adapt' on > php. this reduces the time of program execution.
What does 'adapt' do? It seems since these symbols are constants, the C compiler should optimize it. /Simon > I removed several math operation. > > base, tmin and tmax it is constant. > > base=36 > tmin=1 > tmax=26 > > delta =delta / ( base - tmin); > delta =delta / ( 36 - 1); > delta =delta / (35); > > ((base - tmin) * tmax) / 2 > > ((36 - 1) * 26) / 2= 455 > > > > > 19.11.2013, 18:02, "Simon Josefsson" <si...@josefsson.org>: >> Igor V Belousov <i...@belousovv.ru> writes: >> >>> Hi, >>> I'm modify code in punycode.c for faster run. >> >> Hi. Thanks for looking at the code. Can you explain a bit more about: >> >> 1) How much faster is the code, in what kind of benchmark? >> >> 2) How the change is guaranteed to not change semantics? Where do the >> magic values 455 and 35 come from? >> >> /Simon >> >>> --- punycode_old.c 2013-10-29 11:13:31.000000000 +0400 >>> +++ punycode.c 2013-10-29 11:13:43.000000000 +0400 >>> @@ -146,12 +146,12 @@ >>> /* delta >> 1 is a faster way of doing delta / 2 */ >>> delta += delta / numpoints; >>> >>> - for (k = 0; delta > ((base - tmin) * tmax) / 2; k += base) >>> + for (k = 0; delta > 455; k += base) //faster way >>> { >>> - delta /= base - tmin; >>> + delta /= 35;//faster way >>> } >>> >>> - return k + (base - tmin + 1) * delta / (delta + skew); >>> + return k + base * delta / (delta + skew);// base - tmin + 1 = >>> base - 1 + 1 >>> } >>> >>> /*** Main encode function ***/ >>> >>> Sorry bad English. >>> Igor V Belousov. >>> >>> _______________________________________________ >>> Help-libidn mailing list >>> Help-libidn@gnu.org >>> https://lists.gnu.org/mailman/listinfo/help-libidn > > _______________________________________________ > Help-libidn mailing list > Help-libidn@gnu.org > https://lists.gnu.org/mailman/listinfo/help-libidn _______________________________________________ Help-libidn mailing list Help-libidn@gnu.org https://lists.gnu.org/mailman/listinfo/help-libidn