Моя функция может быть написана гораздо проще, если я рекурсия хвостового вызова (в отличие от цикла for (;;)...break
). Тем не менее, я боюсь, что у меня будут проблемы с производительностью, если компилятор не сможет оптимизировать его, особенно потому, что он будет скомпилирован конечным пользователем.
-
Есть ли способ сообщить компилятору "Удостоверьтесь, что вы оптимизируете этот хвостовой вызов, или даете мне ошибку" (например, Scala поддерживает это)
-
Если компилятор не может его оптимизировать, каковы пределы производительности? О том, сколько хвостовых вызовов я могу ожидать, чтобы работать, не разбивая стек?
UPDATE:
Компиляторы - это gcc и MSVC.
Как правило, я ожидаю около десятка хвостов. Но крайний случай мог иметь тысячи. Платформа представляет собой типичный низкопроизводительный ноутбук (например, Core i3 или i5).