Как я могу найти CPU Sampler в Xcode 4.3? - PullRequest
0 голосов
/ 31 марта 2012

Я хочу использовать "CPU Sampler" в моем проекте для измерения CPU, но я не могу его найти.Я использую XCode 4.3

Ответы [ 4 ]

2 голосов
/ 31 марта 2012

Сначала импортируйте все необходимые файлы заголовков в файл интерфейса.

#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, чтобы узнатьИзмерение ЦП и вызов этого метода через таймер.

1 голос
/ 01 апреля 2012

Инструмент Sampler - это то место, где он всегда был в Инструментах. Чтобы добраться до него, запустите Instruments и либо используйте пустой сеанс профилирования, либо начните с чего-то вроде шаблона драйвера OpenGL ES (как предлагает Марк), в котором уже есть инструмент Sampler. Чтобы добавить инструмент «Сэмплер» в свой шаблон, выберите параметр панели инструментов «Библиотека» и перетащите сэмплер в свой шаблон.

Лично я предпочитаю использовать Time Profiler по причинам, которые я описываю в этом ответе .

1 голос
/ 31 марта 2012

Вы можете использовать инструмент Time Profiler вместо инструмента Sampler. Они записывают аналогичную информацию.

Если вам нужно использовать инструмент Sampler для iOS, выберите шаблон драйвера OpenGL ES. Шаблон OpenGL ES Driver включает в себя инструмент Sampler. После выбора шаблона драйвера OpenGL ES выберите инструмент драйвера OpenGL ES из списка инструментов и нажмите клавишу «Удалить» (Backspace), чтобы удалить инструмент из документа.

0 голосов
/ 31 марта 2012

У вас есть кнопка запуска в верхнем левом углу, которая выглядит как кнопка воспроизведения.Если вы нажмете, что появится выпадающее меню, выберите профиль.Это откроет «Инструменты», где вы можете выбрать «Time Profiler».Если приложение не запускается автоматически в симуляторе, нажмите «Запись».

Я бы рекомендовал установить флажки «Скрыть системные библиотеки» и «Показывать только Obj-C», чтобы вы могли увидеть свой код.

* Обратите внимание, что если вы дважды щелкнете по функции, она покажет вам процентное соотношение того, сколько времени она тратит на часть кода, что весьма удобно.

...