У меня есть два куска кода, которые выполняют одну и ту же операцию.Один кусок написан мной, другой написан третьей стороной.Они оба скомпилированы в один исполняемый файл.Сторонний код, похоже, способен выполнять свою работу намного быстрее, чем мой.Он может выполнять 1500 операций в секунду по сравнению с моими 500. Затем я запустил исполняемый файл в VTune, используя опцию профилирования callgraph, надеясь, что это покажет, где я тратил время.К сожалению, диагностика VTune, которая показывает количество микросекунд, которые, по ее мнению, занимает каждая функция, утверждает, что и моя функция, и функция стороннего производителя занимают около 0,002 секунды на вызов.Это похоже на мой код, но полностью расходится с моим (ручным) измерением скорости стороннего кода.
Как это может произойти?
РЕДАКТИРОВАТЬ: обе части кодаони большие и вызывают свои собственные сложные деревья подфункций.
РЕДАКТИРОВАТЬ: я должен отметить, что сторонний код является чистым C ++, тогда как мой код по сути является C-кодом, который был только что скомпилирован в компиляторе C ++.
РЕДАКТИРОВАТЬ: VTune - очень сложный пакет с множеством параметров конфигурации, которые я не понимаю.Могут ли быть какие-то настройки для игры, которые могут уменьшить эту неточность?