私のプロジェクトでCPU測定用の "CPUサンプラー"を使いたいのですが、見つけられません。私はXCodeを使用しています。4.3xcode 4.3でCPUサンプラーを見つけるにはどうすればいいですか?
答えて
あなたは再生ボタンのように見える左上に実行ボタンがあります。それをクリックすると、ドロップダウンメニューが現れ、プロファイルを選択します。これにより、 "Instruments"が開き、 "Time Profiler"を選択できます。アプリがシミュレータで自動的に起動しない場合は、[レコード]をクリックします。
あなたのコードを見ることができるように、 "Hide System Libraries"と "Show Obj-C only"チェックボックスをチェックすることをお勧めします。
*関数をダブルクリックすると、少しのコードに費やす時間のパーセンテージが表示されますが、これは非常に便利です。
まず、必要なすべてのヘッダーファイルをインターフェイスファイルにインポートします。
#include <sys/sysctl.h>
#include <sys/types.h>
#include <mach/mach.h>
#include <mach/processor_info.h>
#include <mach/mach_host.h>
processor_info_array_t cpuInfo, prevCpuInfo;
mach_msg_type_number_t numCpuInfo, numPrevCpuInfo;
unsigned numCPUs;
NSLock *CPUUsageLock;
と、実装ファイル内にあります。
- (void)cpuSampler:(NSTimer *)timer
{
natural_t numCPUsU = 0U;
kern_return_t err = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO,&numCPUsU, &cpuInfo, &numCpuInfo);
if(err == KERN_SUCCESS) {
[CPUUsageLock lock];
for(unsigned i = 0U; i < numCPUs; ++i) {
float inUse, total;
if(prevCpuInfo) {
inUse = (
(cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_USER] - prevCpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_USER])
+ (cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_SYSTEM] - prevCpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_SYSTEM])
+ (cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_NICE] - prevCpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_NICE])
);
total = inUse + (cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_IDLE] - prevCpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_IDLE]);
} else {
inUse = cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_USER] + cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_SYSTEM] + cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_NICE];
total = inUse + cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_IDLE];
}
if (i == 0) {
NSString *string0 = [NSString stringWithFormat:@"Core: %u Usage: %f%",i,(inUse/total)*100];
}
if (i == 1) {
NSString *string1 = [NSString stringWithFormat:@"Core: %u Usage: %f%",i,(inUse/total)*100];
}
}
[CPUUsageLock unlock];
if(prevCpuInfo) {
size_t prevCpuInfoSize = sizeof(integer_t) * numPrevCpuInfo;
vm_deallocate(mach_task_self(), (vm_address_t)prevCpuInfo, prevCpuInfoSize);
}
prevCpuInfo = cpuInfo;
numPrevCpuInfo = numCpuInfo;
cpuInfo = NULL;
numCpuInfo = 0U;
}
}
NSlog string0とstring1の値がCPU測定値を知り、このメソッドをタイマーで呼び出すことができます。
サンプラー計測器ではなく、タイムプロファイラ計測器を使用することができます。彼らは同様の情報を記録します。
iOS用のサンプラーを使用する必要がある場合は、OpenGL ESドライバテンプレートを選択します。 OpenGL ESドライバテンプレートには、Samplerインストゥルメントが含まれています。 OpenGL ESドライバテンプレートを選択した後、計測器リストからOpenGL ESドライバ計測器を選択し、Delete(Backspace)キーを押して計測器をドキュメントから削除します。
サンプラー・インストゥルメントは常にインストゥルメント内にあります。これを得るには、Instrumentsを起動し、空のプロファイリングセッションを使用するか、すでにSampler instrumentが入っているOpenGL ESドライバテンプレート(Markが示唆しているようなもの)から始めます。サンプラーインストゥルメントをテンプレートに追加するには、ライブラリツールバーのオプションをクリックし、サンプラーをテンプレートにドラッグします。
個人的には、this answerに記載されている理由から、私はタイムプロファイラーを使用することを好みます。
Time ProfilerとCPU Samplerの違いは、関数を実行するために必要なCPU使用量ではなく、実行する関数 –
@ZiadTamim - 上記のリンクされた回答で引用したInstrumentsのユーザーガイドの部分を読んでいますか?両者の違いはそれよりも微妙です。彼らは定期的にアプリケーションを停止し、その時点でスタックトレースをサンプリングします。両方とも、CPUに費やされた時間を何かによって測定します。これは、そのメソッドまたは関数によるCPU使用率を示す良い指標です。 –
- 1. 最後にを見つけるにはどうすればいいですか?
- 2. 私のパッケージを見つけるにはどうすればいいですか?
- 3. AppDelegateをXCode 4.3にどのように接続すればよいですか?
- 4. Xcodeのデバッガでオブジェクトを見るにはどうすればいいですか?
- 5. iOS5/XCode 4.3でQuartCoreをインポートするにはどうすればいいですか? iOS4をで
- 6. BFSで実際に見つかったパスを見つけるにはどうすればよいですか?
- 7. レーキタスクのソースファイルを見つけるにはどうすればよいですか?
- 8. k-bestソリューションを見つけるにはどうすればよいですか?
- 9. ビジュアルスタジオ2012でWindowsデザイナーを見ているコントロールを見つけるにはどうすればよいですか?
- 10. Facebook iOS SDK - Xcode 4.3の静的ライブラリを構築するにはどうすればいいですか?
- 11. Tagプロパティで特定の値を持つTreeViewItemを見つけるにはどうすればいいですか
- 12. XCode 4.3をインストールしたLion 10.7.3にQTをインストールするにはどうすればよいですか?
- 13. Pythonで最も長い文字列を見つけるにはどうすればいいですか?
- 14. Augareed Realityアプリケーションで最も近い場所を見つけるにはどうすればいいですか?
- 15. 無向グラフで最長(重い)のトレイルを見つけるにはどうすればいいですか?
- 16. asp.netコントロールイベントで使用するeventargsクラスを見つけるにはどうすればいいですか
- 17. TextMate:キーボードショートカットに関連付けられたコマンドを見つけるにはどうすればよいですか?
- 18. Xcode 4.3でC++例外ブレークポイントについて何が欠けていますか?
- 19. AS3:ディープネストされたスプライトの親をステージから見つけるにはどうすればいいですか?
- 20. バックボーンフェッチによって生成されたエラーを見つけるにはどうすればいいですか
- 21. 2つのリストから一致するアイテムを見つけるにはどうすればよいですか?
- 22. 各スレッドが実行されているプロセッサを見つけるにはどうすればよいですか?
- 23. 私が触っているビューのタグを見つけるにはどうすればいいですか
- 24. フォーム内に重複するIDを見つけるにはどうすればいいですか?
- 25. インテルCPUカウンターにアクセスするにはどうすればいいですか?
- 26. RORで書かれたウェブサイトを見つけるにはどうすればよいですか?
- 27. Subversionリポジトリ履歴でファイルを見つけるにはどうすればいいですか?
- 28. デスクトップ上で私のダイアログウィンドウの位置を見つけるにはどうすればいいですか?
- 29. sbtで古いライブラリを見つけるにはどうすればよいですか?
- 30. GoDaddyでconfig.m4ファイルを見つけるにはどうすればいいですか?
私は "Time Profiler"について語っていませんでした。私はxcode 4.3でこれを見つけることができる "CPUサンプラー"について語っていました。 –