Mercurial > op > Looping
view Looping-IMP.M @ 1:9d6fb29e41ce
Objective-C IMPのベンチマークが抜けていたため、追加。
author | "uncorrelated zombie" <uncorrelated@yahoo.co.jp> |
---|---|
date | Tue, 15 Feb 2011 18:38:19 +0900 |
parents | |
children |
line wrap: on
line source
#import <stdio.h> #import <objc/Object.h> #import <limits.h> #import <sys/time.h> @interface Looping : Object { int n0; } - (id)init; - (int)calc:(int)n; @end @implementation Looping - (id)init{ [super init]; n0 = 0; return self; } - (int)calc:(int)n { int n1 = n0 + (1 - 2*(n%2)); n0 = n; return n1; } @end double gettimeofday_sec() { struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + (double)tv.tv_usec*1e-6; } int main(){ id o = [[Looping alloc] init]; int (*calc)(id,SEL,int); SEL selector = @selector(calc:); /* calc = (int (*)(id,SEL,int))objc_msg_lookup(o, selector); */ calc = (int (*)(id,SEL,int))[Looping instanceMethodFor:selector]; unsigned c; int n = 1; double t1, t2; t1 = gettimeofday_sec(); for(c=0;c<INT_MAX;c++){ n = calc(o, selector, n); } t2 = gettimeofday_sec(); printf("%d\nObjective-C\t%f\n", n, t2 - t1); return 0; }