Как AQTime делает это?

Вы можете попробовать этот код здесь:

Описание:

  1. Точный индекс предмета и проверить свою текущую позицию в массиве.

  2. отображают текущий индекс.

  3. , когда предыдущая кнопка проверяет, что первый элемент не является массивом, если не обуславливает декремент и отображает значение текущего элемента -1.

  4. , когда вы щелкаете по следующему и тому же условию, и это последний элемент или нет, отметьте здесь и измените текущий индекс и приращение отображаемого значения 2.

в следующем приращении показа нажатия кнопки за раз по 2, потому что, когда текущий индекс увеличивается, тогда он показывает приращение 2, основная причина - это увеличение элемента 1, а индекс содержит 0. Таким образом, это увеличение на 2 за один раз.

Если вы показываете после itemIndex--;, то вы увеличиваете на единицу.

var arr = [{'id':4},{'id':5},{'id':7},{'id':8},{'id':9}];
var  current_id = 5;
//find the your current id is exist in the array
var itemIndex = arr.map(function(o) { return o.id; }).indexOf(current_id);
//display the value of index
document.getElementById('display').innerHTML = itemIndex+1;
document.getElementById('prev').addEventListener('click', function(e) {
  if(itemIndex!=-1 && itemIndex != 0){
    document.getElementById('display').innerHTML = itemIndex;
    itemIndex--;
  }
});
document.getElementById('next').addEventListener('click', function(e) {
  if(itemIndex!==-1 && arr.length-1 > itemIndex){
    document.getElementById('display').innerHTML = itemIndex+2;
    itemIndex++;
    /*document.getElementById('display').innerHTML = itemIndex+1;*/
 }
});
<div id="display"></div>
	<button id="prev">prev</button>
	<button id="next">next</button>

Спасибо

12
задан lkessler 26 November 2008 в 22:02
поделиться

4 ответа

Это - просто предположение, но возможно AQtime основан на технологии, которая подобна Microsoft Detours?

Обходы являются библиотекой для того, чтобы оснастить произвольные функции Win32 на x86, x64, и машины IA64. Обходы прерывают функции Win32 путем перезаписи кода в оперативной памяти для целевых функций.

7
ответ дан 2 December 2019 в 18:22
поделиться

Я не знаю о Delphi, в частности, но отладчик приложения C может сделать линию за линией профилирование относительно легко - это может загрузить код и связать каждый путь выполнения кода с блоком кода. Затем это может повредить на всех командах условного перехода и просто наблюдать и видеть, какой путь выполнения кода взят. Отладчики как gdb могут работать относительно эффективно, потому что они работают через ядро и не изменяют код, им просто сообщают, когда каждая строка выполняется. Если что-то заставляет блок выйтись ранний (longjmp), отладчик может сцепить это и выяснить, как далеко он вошел в блоки, когда это произошло и инкремент только те строки.

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

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

Я сделал профилировщика с открытым исходным кодом для Delphi, которая делает то же: http://code.google.com/p/asmprofiler/

Это не прекрасно, но это свободно :-). Также использование метод Обхода. Это хранит каждый вызов (Вы должны ручной набор, который функционирует, Вы хотите представить), таким образом, это может сделать точное дерево истории вызовов, включая временную диаграмму (!).

9
ответ дан 2 December 2019 в 18:22
поделиться

Давно более не существующий TurboPower также имел большой инструмент профилирования/анализа для Delphi под названием Сыщик Комплект QA. Я нашел это намного более простым, чем AQTime, но также и намного легче получить значимый результат. Могло бы стоить попытаться разыскать - eBay, возможно?

2
ответ дан 2 December 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: