#cpp #компиляция
Хочу устроить небольшой эксперимент, целью которого будет выяснение вопроса о необходимости
избавляться от ветвлений в таких функциях как min, max, sign и abs. Каждый должен иметь
возможность взять вот этот cpp файл (GitHub), скомпилировать, запустить и посмотреть
на вывод в stdout. Программа выдает две колонки чисел: время работы функции с ветвлением
и без него. Программа может работать долго, несколько минут (не пугайтесь, она не виснет).
Сейчас программа компилируется только в VС++ 2015 и в GCC 4.8.1 (из MinGW), а мне
бы хотелось, чтобы она работала и в других компиляторах. Кто что может посоветовать
сделать? От std::chrono мне не избавиться, время замерять нужно как-то более менее
универсально, от int32_t тоже, так как я не знаю, вдруг у кого-то будет int размером
64 бита (мало ли). Возможно, я не во всём следую Стандарту или есть ещё какие-то ошибки?
Важно вот что: я отдаю себе отчёт, что код зависит от наличия знакового сдвига и
дополнительного кода в представлении отрицательных чисел. Так и было задумано.
Ответы
Ответ 1
Приведённый код компилируется «только в VС++ 2015 и в GCC 4.8.1», так как использует возможности стандарта C++11 (а именно std::chrono и заголовочный файл cstdint). Для того, чтобы программа собиралась на компиляторах, поддерживающих исключительно более ранние стандарты, необходимо: Использовать функциюclock из заголовочного файла ctime. Эта функция возвращает время в процессорных тактах, а потому идеально подходит для решения поставленной задачи. Заменить включениена . Оба заголовка имеют практически идентичное содержимое, однако последний был введён ещё в C99.
Комментариев нет:
Отправить комментарий