示例#1
0
文件: BasicOps.php 项目: afaltz/hhvm
 public static function accessStaticString()
 {
     FieldAccess::$staticString = "hi";
     return FieldAccess::$staticString == "hi" ? 1 : 0;
 }
示例#2
0
 public static function runtestsBasic()
 {
     /* 0: Do nothing */
     $loop_do_nothing = function ($count) {
         $result = 0;
         for ($iter = 0; $iter < $count; $iter++) {
         }
         return $result;
     };
     TimeHHOperations::timeop('nothing', $loop_do_nothing);
     /* 1: Function call */
     $loop_function_call = function ($count) {
         $result = 0;
         for ($iter = 0; $iter < $count; $iter++) {
             $result += function_call(0);
         }
         return $result;
     };
     TimeHHOperations::timeop('function_call', $loop_function_call);
     /* 2: Method call */
     $loop_static_method_call = function ($count) {
         $result = 0;
         for ($iter = 0; $iter < $count; $iter++) {
             $result += MethodCall::callStaticMethod(0);
         }
         return $result;
     };
     TimeHHOperations::timeop('static_method_call', $loop_static_method_call);
     $loop_instance_method_call = function ($count) {
         $result = 0;
         $instance = new MethodCall();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->callInstanceMethod(0);
         }
         return $result;
     };
     TimeHHOperations::timeop('instance_method_call', $loop_instance_method_call);
     $loop_interface_method_call = function ($count) {
         $result = 0;
         $instance = new Class0();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->callInterfaceMethod(0);
         }
         return $result;
     };
     TimeHHOperations::timeop('interface_method_call', $loop_interface_method_call);
     /* 3: IndexArrayMap */
     $loop_idxemptyarray = function ($count) {
         $result = 0;
         $instance = new EmptyArray();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->indexEmpty();
         }
         return $result;
     };
     TimeHHOperations::timeop('idxemptyarray', $loop_idxemptyarray);
     $loop_idxnohit_smallarray = function ($count) {
         $result = 0;
         $instance = new NoHitSmallArray();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->indexNoHitSmall();
         }
         return $result;
     };
     TimeHHOperations::timeop('idxnohit_smallarray', $loop_idxnohit_smallarray);
     $loop_idxhit_smallarray = function ($count) {
         $result = 0;
         $instance = new HitSmallArray();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->indexHitSmall();
         }
         return $result;
     };
     TimeHHOperations::timeop('idxhit_smallarray', $loop_idxhit_smallarray);
     $loop_idxnohit_largearray = function ($count) {
         $result = 0;
         $instance = new NoHitLargeArray();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->indexNoHitLarge();
         }
         return $result;
     };
     TimeHHOperations::timeop('idxnohit_largearray', $loop_idxnohit_largearray);
     $loop_idxhit_largearray = function ($count) {
         $result = 0;
         $instance = new HitLargeArray();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->indexHitLarge();
         }
         return $result;
     };
     TimeHHOperations::timeop('idxhit_largearray', $loop_idxhit_largearray);
     /* 4: MethodExists */
     $loop_methodexists_string = function ($count) {
         $result = 0;
         $instance = new MethodExistsString();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->methodexists();
         }
         return $result;
     };
     TimeHHOperations::timeop('methodexists_string', $loop_methodexists_string);
     $loop_methodexists = function ($count) {
         $result = 0;
         $instance = new MethodExistsClass();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->methodexists();
         }
         return $result;
     };
     TimeHHOperations::timeop('methodexists', $loop_methodexists);
     $loop_methodnotexists = function ($count) {
         $result = 0;
         $instance = new MethodNotExistsClass();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->methodexists();
         }
         return $result;
     };
     TimeHHOperations::timeop('methodnotexists', $loop_methodnotexists);
     $loop_methodexists_base = function ($count) {
         $result = 0;
         $instance = new MethodExistsDerivedClass();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->methodexists();
         }
         return $result;
     };
     TimeHHOperations::timeop('methodexists_base', $loop_methodexists_base);
     $loop_methodnotexists_base = function ($count) {
         $result = 0;
         $instance = new MethodNotExistsDerivedClass();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->methodexists();
         }
         return $result;
     };
     TimeHHOperations::timeop('methodnotexists_base', $loop_methodnotexists_base);
     /* 5: Field Access */
     $loop_fieldaccess_staticint = function ($count) {
         $result = 0;
         for ($iter = 0; $iter < $count; $iter++) {
             $result += FieldAccess::accessStaticCounter();
         }
         return $result;
     };
     TimeHHOperations::timeop('fieldaccess_staticint', $loop_fieldaccess_staticint);
     $loop_fieldaccess_instanceint = function ($count) {
         $result = 0;
         $instance = new FieldAccess();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->accessInstanceCounter();
         }
         return $result;
     };
     TimeHHOperations::timeop('fieldaccess_instanceint', $loop_fieldaccess_instanceint);
     $loop_fieldaccess_staticstring = function ($count) {
         $result = 0;
         for ($iter = 0; $iter < $count; $iter++) {
             $result += FieldAccess::accessStaticString();
         }
         return $result;
     };
     TimeHHOperations::timeop('fieldaccess_staticstring', $loop_fieldaccess_staticstring);
     $loop_fieldaccess_instancestring = function ($count) {
         $result = 0;
         $instance = new FieldAccess();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->accessInstanceString();
         }
         return $result;
     };
     TimeHHOperations::timeop('fieldaccess_instancestring', $loop_fieldaccess_instancestring);
     /* 6: Array Access */
     $loop_arrayassign_int = function ($count) {
         $result = 0;
         $instance = new IntArray();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->assignArrayElem();
         }
         return $result;
     };
     TimeHHOperations::timeop('arrayassign_int', $loop_arrayassign_int);
     $loop_arrayassign_string = function ($count) {
         $result = 0;
         $instance = new StringArray();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->assignArrayElem();
         }
         return $result;
     };
     TimeHHOperations::timeop('arrayassign_string', $loop_arrayassign_string);
     /* 7: Closures et al */
     $loop_anonymousfunc_instance = function ($count) {
         $result = 0;
         $instance = new AnonymousFunctions();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->instanceFunction();
         }
         return $result;
     };
     TimeHHOperations::timeop('anonymousfunc_instance', $loop_anonymousfunc_instance);
     $loop_anonymousfunc_static = function ($count) {
         $result = 0;
         $instance = new AnonymousFunctions();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += AnonymousFunctions::staticFunction();
         }
         return $result;
     };
     TimeHHOperations::timeop('anonymousfunc_static', $loop_anonymousfunc_static);
     $loop_variablefunc_instance = function ($count) {
         $result = 0;
         $instance = new AnonymousFunctions();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += $instance->variableFunction();
         }
         return $result;
     };
     TimeHHOperations::timeop('variablefunc_instance', $loop_variablefunc_instance);
     $loop_variablefunc_static = function ($count) {
         $result = 0;
         $instance = new AnonymousFunctions();
         for ($iter = 0; $iter < $count; $iter++) {
             $result += AnonymousFunctions::variableFunctionStatic();
         }
         return $result;
     };
     TimeHHOperations::timeop('variablefunc_static', $loop_variablefunc_static);
 }