ведомая профилем оптимизация (C)

Я просто создаю метод обхода:

public static Fragment _tempFragment = null;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(_tempFragment != null)
        _tempFragment.onActivityResult(requestCode, resultCode, data);
}

В вашем фрагменте перед startActivityforResult установите

MainActivity._tempFragment = this;

После того, как onActivityResult & lt; - in Fragment

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);

     // Do your job
     {

     }
     MainActivity._tempFragment = null;
}
12
задан Motti 6 December 2012 в 15:07
поделиться

4 ответа

Это работает путем размещения дополнительного кода для подсчета количества раз, каждый путь выполнения кода взят. Когда Вы компилируете во второй раз, когда компилятор использует знание, полученное об осуществлении Вашей программы, которую это могло только предположить прежде. Существует пара вещей, к которым может работать PGO:

  • Решение, какие функции должны быть встроены или не в зависимости от того, как часто их называют.
  • Решение, как поместить подсказки, о котором ответвлении, "если" оператор должен быть предсказан на на основе процента вызовов, идущих так или иначе.
  • Решение, как оптимизировать циклы на основе того, сколько повторений взято каждый раз, когда цикл называют.

Вы никогда действительно знаете, какому количеству могут помочь эти вещи, пока Вы не тестируете его.

12
ответ дан 2 December 2019 в 06:28
поделиться

Jason советует, является правильным на. Лучшие ускорения Вы собираетесь прибыться от "обнаружения", что Вы позволяете O (n2) промах алгоритма во внутренний цикл где-нибудь, или что можно кэшировать определенные вычисления за пределами дорогих функций.

По сравнению с микрооптимизацией, которую может инициировать PGO, это крупные победители. После того как Вы сделали тот уровень оптимизации, PGO смог помогать. У нас никогда не было большой удачи с ним, хотя - стоимость инструментария была такова, что наше приложение становится неприменимо медленным (несколькими порядками величины).

Мне нравится использовать Intel VTune в качестве профилировщика, прежде всего, потому что это является неразрушающим по сравнению с оснащением профилировщиков, которые изменяют поведение слишком много.

4
ответ дан 2 December 2019 в 06:28
поделиться

PGO дает приблизительно 5%-е повышение скорости при компиляции x264, проект, я продолжаю работать, и у нас есть встроенная система для него (сделайте fprofiled). Это - хорошее бесплатное повышение скорости в некоторых случаях и вероятно помогает больше в приложениях, которые, в отличие от x264, менее составлены из рукописного блока.

6
ответ дан 2 December 2019 в 06:28
поделиться

Забавная вещь об оптимизации состоит в том, что выигрыши в быстродействии найдены в самом маловероятном из мест.

Это - также причина, которую Вам нужен профилировщик, вместо того, чтобы предположить, где проблемы скорости.

Я рекомендую запуститься с профилировщика (gperf если Вы используете GCC), и только начните вводить по абсолютному адресу вокруг результатов запуска Вашего приложения посредством некоторого нормального функционирования.

2
ответ дан 2 December 2019 в 06:28
поделиться