Я создал компилятор для языка программирования общего назначения. В качестве части цепочки инструментов я хотел бы включить профилировщик с возможностью оценки временной сложности данного выражения. Кажется довольно простым вычислить алгоритмическую сложность - то есть, если предположить, что все операции с постоянным временем занимают одинаковое количество времени - но я бы хотел иметь возможность приблизительно real сложность тоже. Для этого мне нужна информация об относительной производительности отдельных операций процессора, таких как inc
, add
, mul
и т. Д., А также о некоторых операциях более высокого уровня, таких как ввод-вывод.
Я понимаю, что это зависит как от архитектуры, так и от реализации, в лучшем случае может дать только нечеткие результаты, и - вопрос двойственный. Но кто-нибудь знает какие-нибудь высококачественные ресурсы, которые помогут мне начать? Может ли рассмотрение реализаций операций высокого уровня с открытым исходным кодом дать мне достаточно информации, чтобы дать справедливую оценку их сложности?