ответ на задание 1 (1124142), страница 2
Текст из файла (страница 2)
При смене индексации по массиву результаты становятся следующими:number of ticks = 3442521213number of ticks = 3607482681number of ticks = 3339299044number of ticks = 3295363860number of ticks = 3383916652number of ticks = 3339608590number of ticks = 3376704114number of ticks = 3327883992number of ticks = 3320031942number of ticks = 3479668713среднее значение = 3391248080,1с учётом тактовой частоты это 1,413s – таким образом прирост от смены системы составил почтиничего, потому что проблема в том, что всё упирается в скорость передачи по шине через кеши.5. Отмечу любопытный факт – если установить в Visual Studio флаг оптимизации на максимальнуюпроизводительность (так оно по умолчанию), то количество тактов, за которое будет выполнятьсяпрограмма, будет равно 36 тактам.6. Использование профилирования в Visual Studio:Если пойти в Analyze -> Performace and Diagnostics, то запустится профилирование программы, и потомможно будет посмотреть результаты в виде красивых таблиц, и пометок прямо в коде, вот такихнапример:Здесь прямо указано, на что тратится больше всего времени (в режиме с инвертированнымииндексами)Так же есть таблицы с общим выполнением программы по времени, таблицы с учетом выполнения повремени ассемблерных конструкций, в которые скомпилировался код.Объяснения (подведение итогов)1.
Способов профилирования – тьма2. Самое удобное – в Visual Studio3. Важно учитывать время, затраченное на то, чтобы перегнать данные из оперативной памяти впроцессор, поэтому порядок индексирования важен4. Необходимо использовать несколько замеров, что бы усреднить разброс.5. Выполнение программ под виртуальной машиной сильно медленнее (0,5s против 1s)6. Компиляция в режиме оптимизации может сильно сократить время работы (сокращение было смиллиарда до 36 тактов).7.
Для того чтобы уменьшить разброс было запущенно по 10 тестов для time и rdtsc..