Некоторые процессоры имеют регистры с плавающей точкой, которые имеют больше чем 64 бита точности (например, 32-разрядный x86 без SSE, см. комментарий Peter). Тот путь при выполнении нескольких операций на числах двойной точности, Вы на самом деле получает ответ более высокой точности, чем если бы необходимо было усечь каждый промежуточный результат к 64 битам.
Это является обычно большим, но это означает, что в зависимости от того, как компилятор присвоенные регистры и сделал оптимизацию, у Вас будут различные результаты для тех же самых операций на тех же самых исходных данных. При необходимости в непротиворечивости тогда, можно вынудить каждую операцию вернуться к памяти при помощи энергозависимого ключевого слова.
Это также полезно для некоторых алгоритмов, которые не имеют никакого алгебраического смысла, но уменьшают ошибку с плавающей точкой, такую как суммирование Kahan. Algebraicly это - NOP, таким образом, это будет часто неправильно оптимизироваться, если некоторые промежуточные переменные не будут энергозависимы.
Плюсы
Минусы
Если в вашей среде есть несколько других инструментов с открытым исходным кодом / бесплатных инструментов (SVN и т. Д.) И утилит, я бы предпочел TeamCity. Мы обнаружили, что это довольно круто и интегрируется с большинством других популярных инструментов.
Если вы «ограничены» стеком MS (например, используете VSS для управления версиями), то это единственная действительно веская причина выбрать Team Build.