как я добавляю препроцессор #define в devenv командной строке?

Хотите ли Вы идеальный hashfunction (различное значение для каждого объекта, который оценивает для равенства), или просто довольно хороший всегда является компромиссом производительности, обычно требуется время для вычисления хорошего hashfunction и если набор данных является небольшим, Вы лучше из с быстрой функцией. Самой важной (поскольку Ваше второе сообщение указывает) является правильность, и достигнуть этого всего Вам нужно, должен возвратить Длину массива. В зависимости от Вашего набора данных, который мог бы даже быть в порядке. Если это не (скажите, что все Ваши массивы одинаково долги), можно пойти с чем-то дешевым как рассмотрение первого и последнего значения и XORing их значения и затем добавить больше сложности, поскольку Вы считаете целесообразным для своих данных.

А быстрый способ видеть, как Ваш hashfunction работает на Ваших данных, состоит в том, чтобы добавить все данные к хеш-таблице и рассчитать, количество раз Равняется функции, назван, если это слишком часто, у Вас есть больше работы, чтобы сделать на функции. Если Вы делаете это просто имеет в виду, что размер хеш-таблицы должен быть установлен больше, чем Ваш набор данных, когда Вы запускаете, иначе Вы собираетесь перефразировать данные, которые инициируют, повторно вставляет, и больше Равняется оценкам (хотя возможно более реалистичный?)

Для некоторых объектов (не этот) быстрый HashCode может быть сгенерирован ToString ().GetHashCode (), конечно, не оптимальный, но полезный, поскольку люди склонны возвращать что-то близко к идентификационным данным объекта из ToString (), и это точно, что GetHashcode ищет

Мелочи: худшая производительность, которую я когда-либо видел, состояла в том, когда кто-то по ошибке возвратил константу из GetHashCode, легкого определить с отладчиком, хотя, особенно если Вы делаете много поисков в Вашей хеш-таблице

11
задан Paulius Liekis 23 November 2009 в 13:58
поделиться

2 ответа

Я не совсем понимаю, что вы имеете в виду под командной строкой vcbuild, но если вы имеете в виду компилятор командной строки Visual C ++, то вы можете добавить определения с помощью add / Dxxxx, например

cl.exe /DSHAREWARE ....

Дополнительный ответ на основе комментарии:

Вы должны иметь возможность установить переменную среды CL с помощью дополнительного определения препроцессора:

SET CL=/DSHAREWARE
devenv ....

Простую информацию можно найти на MSDN

12
ответ дан 3 December 2019 в 08:30
поделиться

#defines определены в файле проекта Visual Studio (файл .dsp или .vcproj). Это простой текстовый файл. Таким образом, вы можете отредактировать файл проекта из сценария, а затем вызвать devenv.exe.

1
ответ дан 3 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: