Вопросы с тегом 'micro-optimization'

Микрооптимизация - это процесс тщательной настройки небольших фрагментов кода для устранения ощущаемого недостатка в некоторых аспектах его работы (чрезмерное использование памяти, низкая производительность и т.д.).
23
ответов

Какой вариант лучше использовать для деления целочисленного числа на 2?

Какой из следующих методов является наилучшим вариантом для деления целого на 2 и почему? Техника 1: x = x >> 1; Техника 2: x = x / 2; Здесь x - целое число.
задан 21 мая '12 в 10:54
3
ответов

Почему мое приложение тратит 24% своей жизни на нулевую проверку?

У меня есть дерево решений с критическими характеристиками производительности, и я хотел бы сфокусировать этот вопрос на одной строке кода. Ниже приведен код для итератора двоичного дерева с результатами анализа производительности от него. p...
задан 15 мая '13 в 12:15
3
ответов

Что каждый программист должен знать о памяти?

Мне интересно, сколько ульрих Дреппер Что каждый программист должен знать о памяти с 2007 года по-прежнему действует. Кроме того, я не мог найти более новую версию, чем 1.0 или ошибки.
задан 14 нояб. '11 в 21:30
7
ответов

Самый быстрый способ удалить все непечатаемые символы из строки Java

Каков самый быстрый способ удалить все непечатаемые символы из String в Java? До сих пор я пробовал и измерял 138-байтовую строку с 131 символом: String replaceAll() - самый медленный метод 517009 результатов/сек Предварительно скопируйте ш...
задан 23 авг. '11 в 16:10
1
ответ

Каков наилучший способ установить регистр в ноль в сборке x86: xor, mov или или?

Все следующие инструкции делают то же самое: установите %eax на ноль. Какой путь оптимален (требуется меньше машинных циклов)? xorl %eax, %eax mov $0, %eax andl $0, %eax
задан 12 нояб. '15 в 10:55
7
ответов

Является ли более эффективным выполнение проверки диапазона путем литья в uint вместо проверки на отрицательные значения?

Я наткнулся на этот фрагмент кода в .NET Исходный код: // Following trick can reduce the range check by one if ((uint) index >= (uint)_size) { ThrowHelper.ThrowArgumentOutOfRangeException(); } По-видимому, это более эффективно (?), чем if (in...
задан 30 марта '15 в 13:10
9
ответов

Когда, если когда-либо, цикл разворачивания по-прежнему полезен?

Я пытаюсь оптимизировать очень критически важный для производительности код (быстрый алгоритм сортировки, который называется миллионными и миллионными временами в моделировании monte carlo) путем циклического разворота. Здесь внутренний цикл, который...
задан 28 февр. '10 в 1:41
4
ответов

что быстрее: in_array или isset?

Этот вопрос просто для меня, так как мне всегда нравится писать оптимизированный код, который может работать и на дешевых медленных серверах (или на серверах с большим количеством трафика) Я огляделся, и я не смог найти ответ. Мне было интересно, чт...
задан 21 нояб. '12 в 1:20
4
ответов

Странное использование кода `?:` В `typeid`

В одном из проектов, над которыми я работаю, я вижу этот код struct Base { virtual ~Base() { } }; struct ClassX { bool isHoldingDerivedObj() const { return typeid(1 ? *m_basePtr : *m_basePtr) == typeid(Derived); } Base *m_basePtr; }; ...
задан 22 июля '11 в 23:43
7
ответов

Деление с плавающей запятой против умножения с плавающей запятой

Есть ли какое-либо (не микрооптимизация) усиление производительности при кодировании float f1 = 200f / 2 в сравнении с float f2 = 200f * 0.5 Один из моих профессоров рассказал мне несколько лет назад, что деления с плавающей запятой были медлен...
задан 08 нояб. '10 в 18:04
3
ответов

Стоимость обработчиков исключений в Python

В еще один вопрос, принятый ответ предложил заменить (очень дешевый) оператор if в коде Python блоком try/except для повышения производительности. Проблемы с кодированием в сторону, и если предположить, что исключение никогда не запускается, то кака...
задан 26 марта '10 в 11:52
4
ответов

Рассчитывает ли Sqrt (x) как x * InvSqrt (x) какой-либо смысл в коде Doom 3 BFG?

Я просмотрел недавно выпущенный исходный код Doom 3 BFG, когда я столкнулся с чем-то, что, похоже, не имеет никакого смысла. Doom 3 завершает математические функции в классе idMath. Некоторые из функций просто соответствуют соответствующим функциям и...
задан 28 нояб. '12 в 15:25
6
ответов

Использует ли xor reg, reg преимущество над mov reg, 0?

Существует два известных способа установки целочисленного регистра на нулевое значение на x86. Либо mov reg, 0 или xor reg, reg Есть мнение, что второй вариант лучше, поскольку значение 0 не сохраняется в коде и что сохраняет несколько байтов ...
задан 16 июля '09 в 9:06
1
ответ

Передача нулевого указателя на размещение new

Оператор размещения new по умолчанию объявлен в 18.6 [support.dynamic] ¶1 с несинхронизирующей спецификацией исключений: void* operator new (std::size_t size, void* ptr) noexcept; Эта функция ничего не делает, кроме return ptr;, поэтому разумно,...
задан 10 июля '13 в 15:50
13
ответов

'...!= null' или 'null! =....' лучшая производительность?

Я написал два метода для проверки производительности public class Test1 { private String value; public void notNull(){ if( value != null) { //do something } } public void nullNot(){ if( null != value) { //do something } } } и пр...
задан 08 марта '10 в 3:14