Создайте короткую C-программу, которая будет нелепо компилироваться с помощью gcc. Записи будут оцениваться по времени компиляции с последующим вычитанием времени компиляции эталонной программы.
правила
- Любая функция языка C или расширение gcc
- gcc 4.2.1
code-challenge
c
charliehorse55
источник
источник
Ответы:
источник
main(){char*z=j;}
чтобы сделать эту программу действительной c./Zm
бы исправитьИ ответ Чарли, и мой предыдущий, работают по принципу, позволяющему препроцессору писать много кода, но в основном они используют сам препроцессор, лексер (хорошая идея, поскольку этот шаг традиционно был медленным) и парсер. Мой также пытается выполнить шаги по оптимизации и генерации кода, но это явно не приносит много пользы.
Размышляя о том, как работает типичный c-компилятор, я понял, что мы ничего не делаем для кода, связанного с таблицей символов. Эта запись является попыткой исправить это. Предполагается, что он напоминает базовую объектную ориентацию в реализации c, но не делает ничего интересного: просто использует технику расширения препроцессора для объявления и тривиальной (и неправильной) инициализации группы объектов. Объект, который использует сложные типы, на многих уровнях области видимости, скрывая друг друга при различных удалениях. Это должно дать таблице символов настоящую работу.
Время компиляции на моей машине превышает 4 секунды
-O3
и более 1 секунды без оптимизации.Очевидно, что следующим шагом будет завершение реализации ОО для классов BCD и повторное выполнение вычислений pi с использованием этого, так что я получу оба эффекта напряженными.
источник
Вот рифф из темы экспоненциального препроцессора-расширения, который делает что-то минимально интересное: вычисляет два приближения к пи методами ряда и сравнивает как значение в, так
math.h
и обычное заклинание.Ungolfed.
Предполагается, что вы используете,
gcc
иglibc
можете или не можете работать с другими договоренностями.time (1)
Для компиляции с-03
1 на моем 2,4-ГГц Intel Core 2 Duo MacBook требуется около 1,0-1,1 секунды процессорного времени (по оценкам) . Компиляция по умолчанию занимает около 0,4 секунды процессорного времени.Увы, я не могу получить gcc для оценки
pow
илиtgamma
во время компиляции, что действительно помогло бы.Когда вы запускаете его, вывод:
который показывает, насколько медленно сходится наивный ряд.
1 Чтобы получить максимально возможное постоянное свертывание и удаление подвыражений.
источник