Giter Club home page Giter Club logo

Comments (3)

jd327 avatar jd327 commented on July 17, 2024

Hmm yeah that's really slow - not supposed to be like that. I haven't run Hashids on a vagrant box, but it doesn't sound like the php code within the library - there's no "warm up" section that runs on first run, and there's no caching either.

Two things that come to mind:

  1. Looks like you're using GMP or BCMatch functions since your max int value is raised. Maybe there's some issue with running them in Vagrant. Try to set $this->_math_functions to an empty array on line 52 inside the lib and see if that changes anything.

  2. Something might be up with your Vagrant and PHP setup. Looks like there's others with similar issues: http://stackoverflow.com/questions/16724910/vagrant-on-windows-w-precise64-runs-php-very-slowly

from hashids.

trompx avatar trompx commented on July 17, 2024

Ok, so...

I tried first option number 1. In fact by adding line 52, the $_max_int_value was returning 1000000000 but no gain in speed.

Secondly, I tried to first disable xdebug without success after reading many SO posts. I ended up completly remove it but no gain either.

I started to track execution time of each function of the script, and what was taking time was not even the constructor function (that would have make sense as only the first encrypt was taking time), but finally it was the time to call the constructor which was slow.

I use laravel framework and had created a package to include your script (because most of the existing packages on github didn't include the good version so I had erros when "composer update"). It was my first try at creating a package which was created in a workbench folder (which was a bit tricky to load : many class not found errors etc.). I tried to add the Hashids class to the compiled.php file which is supposed to load fast but still no gain.

I ended up to rewrite a public static version of the script and include it in a library folder under the app folder : app/lib/Hashids.php. Then I first call the constructor "new Hashids(param1, param2, param3)" and use "Hashids::encrypt(myid)".

Results :
0: 0.0002892017364502
1: 0.00026702880859375
2: 0.00026416778564453
3: 0.00025701522827148
4: 0.00026488304138184
5: 0.00036287307739258
6: 0.00073981285095215
7: 0.0016500949859619
8: 0.00038290023803711
9: 0.00027298927307129
10: 0.00026702880859375
11: 0.00026583671569824
12: 0.0013828277587891
13: 0.00026607513427734
14: 0.00026416778564453
15: 0.00033307075500488
16: 0.00026607513427734
17: 0.00026297569274902
18: 0.00026297569274902
19: 0.00028896331787109

Thank you for your time, appreciate it a lot :)

Cheers

from hashids.

jd327 avatar jd327 commented on July 17, 2024

Perfect, thanks for following up and good job figuring it out.

from hashids.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.