я считаю, что «глядя на код» является хорошим началом. Если вы используете больше переменных и сложнее, чем другие, это, вероятно, медленнее.
Однако, конечно, умные трюки, которые могут сделать более сложную функцию, выполняются быстрее (например, код, который читает 8 байтов за раз), но, разумеется, когда вы обнаружите разницу, код более сложный - для длинных строк, которые в значительной степени похожи, есть большая победа »).
Итак, в конце концов, нет никакой замены для фактического запуска кода, используя синхронизацию тактового цикла (например, инструкцию RDTSC для процессоров x86) или запуск большого цикла для выполнения кода много раз, чтобы дать разумная продолжительность выполнения.
Если ваш код не должен запускаться на одной внедренной цели, вы, вероятно, захотите запустить код на множестве различных аппаратных средств, чтобы определить, быстрее или быстрее ли работает на процессоре A на B, C и процессоры типа D. Часто это работает, но иногда вы можете обнаружить, что конкретная модель процессора быстрее для НЕКОТОРЫХ операций, а другая быстрее для другой (например, на основе размера кеша и т. Д.).
Было бы очень важно, в случае операций с строкой, попробовать разные входы разницы, различные точки различия (например, длинную строку, но другую «раннюю», а также длинную строку с разницей «поздно»,). Иногда разные подходы будут показывать разные результаты для коротких/длинных строк или ранней/поздней точки различия (и, конечно, «равных» строк, длинных или коротких).
Подсчет выполненной инструкции может помочь, да. Можно также время кода. –
'gcc -S' дает выход ассемблера. '-E' для« предварительно обработанного кода ». –
@MatsPetersson Действительно, это ошибка, благодарность за замечание – MOHAMED