Comments (3)
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:
-
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. -
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.
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.
Perfect, thanks for following up and good job figuring it out.
from hashids.
Related Issues (20)
- Padding/minimum value not being respected HOT 1
- Laravel 9 has been released. Would be awesome if we could add support to this package 🚀 HOT 1
- Ability to encode fractions/decimal places HOT 2
- TypeError: Unsupported operand types: int - string on PHP 8.1 HOT 1
- [PHP 8.1] Deprecated: Implicit conversion from float-string to int loses precision HOT 1
- 2 particulars numbers render the exact same result whatever the salt used ???!!! HOT 1
- Is there any max length for the salt? HOT 2
- How can I get more randomness? HOT 1
- Implicit conversion from float-string HOT 1
- How to use without Composer? HOT 6
- Parsing ERROR? HOT 2
- Error Invalid text representation (hashids not decoding) with route in plural HOT 1
- Different results for large numbers between 32-bit and 64-bit HOT 1
- encode number 1 but got different values in laravel and hyperf project HOT 2
- xdffx dsdxsazazjjk
- Missing math extension for Hashids, install either bcmath or gmp. HOT 6
- HashIds not working with macOS Sonoma 14.2 HOT 3
- Github Actions produces gmp_mod(): Argument #1 ($num1) must be of type GMP|string|int error HOT 1
- gmp_mod Argument #1 ($num1) is not an integer string HOT 3
- Same result for different numbers HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hashids.