NSResponderのkeyDown()とI/OKitのIOHIDManagerのInputValueCallbackの反応速度の違い
2017-01-06 19:33 - 1 min readナノ秒の精度で時間を計測できる mach_absolute_time()
で検証しました。
NSResponderはSpriteKitのシーンが保持するとあるSKNodeで,keyDown()時の速さを測定しました。
ちなみにSKNodeはfirstResonderになっています。
結論
ものすごくざっくり言うと,I/OKitのHIDManagerでハンドリングした方が常に早く,NSResponderのkeyDown()よりも大体1.5ms〜3ms早く反応します。どちらもメインスレッドでコールバックが呼ばれます。
I/OKitでkeyboardの入力を取るのはものすごーく大げさな実装になって面倒なのですが,タイミングがシビアなアプリケーションを作る際にはI/OKitを採用する価値がありそうです。