Advertisement
Guest User

Untitled

a guest
Aug 19th, 2012
1,303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. /**
  4.  * Performance test for 'Checking if an instance's class implements an interface?'
  5.  * See: http://stackoverflow.com/q/274360/473961
  6.  *
  7.  * Results for 100,000 iterations:
  8.  * class_implements + isset: 149.19 ms
  9.  * Reflection: 294.79 ms
  10.  * InstanceOf (with cheap __construct()): 84.65 ms
  11.  */
  12.  
  13. interface IInterface
  14. {
  15. }
  16.  
  17. class TheClass implements IInterface
  18. {
  19. }
  20.  
  21. $tmp = false;
  22. $interfaces = null;
  23. $class = null;
  24.    
  25. $start = microtime(true);
  26. for ($i = 0; $i < 100000; $i++) {
  27.     $interfaces = class_implements('TheClass');
  28.  
  29.     $tmp = isset($interfaces['IInterface']);
  30. }
  31. $end = microtime(true);
  32.  
  33. $total = round(($end - $start) * 1000.0, 2);
  34. echo "class_implements + isset: " . $total . " ms\n";
  35.    
  36. $start = microtime(true);
  37. for ($i = 0; $i < 100000; $i++) {
  38.     $class = new ReflectionClass('TheClass');
  39.     $tmp = $class->implementsInterface('IInterface');
  40. }
  41. $end = microtime(true);
  42.  
  43. $total = round(($end - $start) * 1000.0, 2);
  44. echo "Reflection: " . $total . " ms\n";
  45.    
  46. $start = microtime(true);
  47. for ($i = 0; $i < 100000; $i++) {
  48.     $class = new TheClass();
  49.     $tmp = ($class instanceof IInterface);
  50. }
  51. $end = microtime(true);
  52.  
  53. $total = round(($end - $start) * 1000.0, 2);
  54. echo "InstanceOf: " . $total . " ms\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement