2015-04-08 2 views
0

Обратитесь к этому вопросу нижеСоздание Execute таймера в Swift

How to log a method's execution time exactly in milliseconds?

И я преобразовать код быстрым, как этот

//OBjective-C 
//#define TICK NSDate *startTime = [NSDate date] 
//#define TOCK NSLog(@"Time: %f", -[startTime timeIntervalSinceNow]) 

class AppDelegate: NSObject, NSApplicationDelegate { 

var TIMER = NSDate() 

@IBOutlet weak var window: NSWindow! 

func TICK() 
{ 
    TIMER = NSDate() 
} 

func TOCK(){ 

    println("\(-TIMER.timeIntervalSinceNow)") 
} 



func applicationDidFinishLaunching(aNotification: NSNotification) { 
    // Insert code here to initialize your application 
    TICK() 
    TOCK() 
} 

Timing в Swift: 3.40343e-05 в то время как цель -C: 0.000009 Почему Swift так медленно?

спасибо.

+0

Вы скомпилировали оба кода Obj-C и Swift в режиме Release (с оптимизацией)? –

+0

Я тестирую этот код как в applicationDidFinishLaunching в режиме отладки. – webmastx

+0

Каковы результаты в режиме выпуска? Я бы также рекомендовал проверить с помощью бета-версии Xcode 6.3, которая значительно улучшает производительность с помощью Swift 1.2. –

ответ

0

Если вы хотите использовать в любом месте вашего кода и избежать глобальных переменных, вы можете сделать такой же подход со статическими функциями внутри класса утилиты, как так (я называю класс Debug):

class Debug { 

private static var tickTimestamp: Date = Date() 

static func tick() { 
    print("TICK.") 
    tickTimestamp = Date() 
} 

static func tock() { 
    print("TOCK. Elapsed Time: \(Date().timeIntervalSince(tickTimestamp))") 
} 

} 

Тогда используйте как:

Debug.tick() 
Debug.tock() 
Смежные вопросы