Skip to content

Instantly share code, notes, and snippets.

@pjaspers
Created November 23, 2011 19:31
Show Gist options
  • Save pjaspers/1389649 to your computer and use it in GitHub Desktop.
Save pjaspers/1389649 to your computer and use it in GitHub Desktop.
//
// Speciaal voor Inferis
// YES nil N
//Met ifs 0.452217
//Met statement 0.430586
//#######################
//
//NO nil N
//Met ifs 0.451592
//Met statement 0.553710
//#######################
//
//YES iets N
//Met ifs 1.388737
//Met statement 1.790645
//#######################
//
//YES iets Bla
//Met ifs 2.469209
//Met statement 2.307097
#import "AppDelegate.h"
static inline BOOL IsEmpty(id thing) {
if (thing == nil) return YES;
if ([thing isEqual:[NSNull null]]) return YES;
if ([thing respondsToSelector:@selector(count)]) return [thing performSelector:@selector(count)] == 0;
if ([thing respondsToSelector:@selector(length)]) return [thing performSelector:@selector(length)] == 0;
return NO;
}
@interface Inferis : NSObject {
}
- (BOOL)multipleIfs:(BOOL)isTextValue values:(NSArray *)values flag:(NSString *)flag;
- (BOOL)statement:(BOOL)isTextValue values:(NSArray *)values flag:(NSString *)flag;
@end
@implementation Inferis : NSObject
- (BOOL)multipleIfs:(BOOL)isTextValue values:(NSArray *)values flag:(NSString *)flag {
if (!isTextValue && IsEmpty(values)) return YES;
if ([flag isEqualToString:@"N"]) return NO;
return YES;
}
- (BOOL)statement:(BOOL)isTextValue values:(NSArray *)values flag:(NSString *)flag {
return ![flag isEqualToString:@"N"] || (!isTextValue && IsEmpty(values));
}
@end
@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
Inferis *inf = [[Inferis alloc] init];
NSDate *startingDate = nil;
NSArray *values = [NSArray arrayWithObject:@"iets"];
NSLog(@"YES nil N");
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf multipleIfs:YES values:nil flag:@"N"];
}
NSLog(@"Met ifs %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf statement:YES values:nil flag:@"N"];
}
NSLog(@"Met statement %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
NSLog(@"#########################\n\n");
NSLog(@"NO nil N");
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf multipleIfs:NO values:nil flag:@"N"];
}
NSLog(@"Met ifs %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf statement:NO values:nil flag:@"N"];
}
NSLog(@"Met statement %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
NSLog(@"#########################\n\n");
NSLog(@"YES iets N");
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf multipleIfs:YES values:values flag:@"N"];
}
NSLog(@"Met ifs %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf statement:YES values:values flag:@"N"];
}
NSLog(@"Met statement %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
NSLog(@"#########################\n\n");
NSLog(@"YES iets Bla");
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf multipleIfs:YES values:values flag:@"Bla"];
}
NSLog(@"Met ifs %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
startingDate = [NSDate date];
for (int i = 0; i < 10000000; i++) {
[inf statement:YES values:values flag:@"Bla"];
}
NSLog(@"Met statement %f",[[NSDate date] timeIntervalSinceDate:startingDate]);
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment