-
Notifications
You must be signed in to change notification settings - Fork 0
__callStatic: cache created Enum instances #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
e93f5b5 to
c9bde62
Compare
|
Does this pass psalm? Are you opening up a pull upstream? |
|
CR 🎸 |
Their whole repo doesn't pass psalm (this pull doesn't affect the number of errors). And yes, I will once we get CR here. |
What that's sad! I added it and made it pass 100% 😢 CR 🌵 |
It's possible I'm wrong :-( Looking into it. |
|
Ah it looks like they don't use a composer.lock, psalm had an update. Got smarter. Started failing, no one cared. Lame. CC @danielbeardsley |
|
Master: |
Instead of creating a new one each time, cache them.
This only matters if you're creating thousands of these objects.
I've used a small test script:
<?
require './vendor/autoload.php';
class Fast extends MyCLabs\Enum\Enum {
protected const VALUE_ONE = "one";
protected const VALUE_TWO = "two";
}
$t = microtime(true);
for ($i = 0; $i < 1000; $i++) {
Fast::VALUE_ONE();
}
$secondsPerOp = (microtime(true) - $t) / 1000;
var_dump("Microseconds per op: " . $secondsPerOp * 1000000);
Before this change, we were getting about 4us per operation,
after this, we get about 1us per op, a 4X speedup!!
Note: This only matters if you end up constrcuting thousands of these
objects. We end up using this library extensively and thus end up
incurring more than ten milliseconds per request just for Enum
construction.
c9bde62 to
82ec4ac
Compare
|
Amended the commit with psalm comment changes. |
|
CR 🌵 |
|
CR ⚡ |
|
CR 🌵 |
|
We'll have to change our composer.json to use this repo as a dependency. |
|
CR ⚡ |


Instead of creating a new one each time, cache them.
This only matters if you're creating thousands of these objects.
I've used a small test script:
Before this change, we were getting about 4us per operation,
after this, we get about 1us per op, a 4X speedup!!
Note: This only matters if you end up constructing thousands of these
objects. We end up using this library extensively and thus end up
incurring more than ten milliseconds per request just for Enum
construction.