Skip to content

Instantly share code, notes, and snippets.

@D1360-64RC14
Created August 25, 2025 18:34
Show Gist options
  • Select an option

  • Save D1360-64RC14/3f1154fb0850ac15b931568e1827035f to your computer and use it in GitHub Desktop.

Select an option

Save D1360-64RC14/3f1154fb0850ac15b931568e1827035f to your computer and use it in GitHub Desktop.
PHP 8.4 -- Benchmark between `get_class()` vs `instanceof`.

PHP 8.4 -- Benchmark of get_class() vs instanceof.

Result from onlinephp.io (link w/ code):

float(0.5350112915039062)
float(0.308990478515625)
float(0.5180835723876953)
float(0.2639293670654297)
float(0.5099773406982422)
float(0.2598762512207031)
<?php
class ClassA {}
class ClassB {}
class ClassC {}
function testGetClass() {
$start = microtime(true);
$obj = new ClassB();
$t = 0;
for ($i = 0; $i < 10_000; $i++) {
if (get_class($obj) === ClassA::class) {
$t++;
} else if (get_class($obj) === ClassB::class) {
$t++;
} else if (get_class($obj) === ClassC::class) {
$t++;
} else {
$t++;
}
}
return microtime(true) - $start;
}
function testInstanceOf() {
$start = microtime(true);
$obj = new ClassB();
$t = 0;
for ($i = 0; $i < 10_000; $i++) {
if ($obj instanceof ClassA) {
$t++;
} else if ($obj instanceof ClassB) {
$t++;
} else if ($obj instanceof ClassC) {
$t++;
} else {
$t++;
}
}
return microtime(true) - $start;
}
var_dump(testGetClass() * 1000);
var_dump(testInstanceOf() * 1000);
var_dump(testGetClass() * 1000);
var_dump(testInstanceOf() * 1000);
var_dump(testGetClass() * 1000);
var_dump(testInstanceOf() * 1000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment