У меня есть высокопроизводительный код Haskell - внутренний цикл составляет до 6 инструкций сборки. Изменение внутреннего цикла, чтобы быть менее эффективным, не оказывает заметного влияния на производительность, предполагая, что внутренний цикл не является узким местом. Однако, когда я включаю профилирование, код сборки, сгенерированный для внутреннего цикла, становится значительно менее эффективным, и профилировщик сообщает, что внутренний цикл занимает 85% времени.
Я подозреваю, что что-то не так медленно, но когда я использую профилирование, чтобы понять, что, я подозреваю, что профилирование делает внутренний цикл достаточно медленным, чем он доминирует. Какие методы я могу использовать, чтобы узнать, куда идет время? Профилировщик выборки был бы замечательным, если бы существовал для Haskell.