.NET оптимизированный Int32

В итоге я просто использовал одинарную кавычку в командном файле

cscript /nologo _execute.vbs "Installing IIS" "C:\Windows\SysWOW64\inetsrv\appcmd set site 'Default Web Site' -name:Stream"

и заменил их на двойные кавычки в файле VBS.

Replace(WScript.Arguments.Item(1),"'",chr(34))

Это не идеально, но это работает для моих целей.

9
задан Ryan Gates 30 December 2013 в 18:58
поделиться

5 ответов

Это - забавный способ поместить его. Время выполнения не имеет непосредственное отношение к нему. ЦП разработан для обработки 32-разрядных целых чисел, который является, почему они являются самыми эффективными для использования.

В 64-разрядной среде это снова зависит от ЦП. Однако на x86 ЦП, по крайней мере (который, насколько я знаю, является единственным местом выполнения.NET), 32-разрядные целые числа являются все еще значением по умолчанию. Регистры были просто расширены так, они могут соответствовать 64-разрядному значению. Но 32 все еще значение по умолчанию.

Поэтому предпочтите 32-разрядные целые числа, даже в 64-разрядном режиме.

Править: "значение по умолчанию" является, вероятно, не правильным словом. ЦП просто поддерживает много инструкций, которые определяют, какие типы данных он может обработать, и который он не может. Там нет никакого "значения по умолчанию". Однако обычно существует размер данных, который ЦП разработан для обработки эффективно. И на x86, в 32 и 64-разрядный режим, который является 32-разрядными целыми числами. 64-разрядные значения являются обычно не более дорогими, но они действительно имеют в виду более длинные инструкции. Я также полагаю, что, по крайней мере, 64-разрядный способный Pentium 4 был значительно медленнее на уровне 64-разрядной операции в секунду, хотя на недавнем ЦП, что часть не должна быть проблемой. (Но размер инструкции может все еще быть),

Меньший, чем 32-разрядные значения несколько более удивительны. Да, существует меньше данных для передачи, который хорош, но ЦП все еще захватывает 32 байта за один раз. Что означает, что это должно кашировать часть значения, таким образом, они становятся еще медленнее.

6
ответ дан 4 December 2019 в 22:30
поделиться

Scott Hanselman отправил статью, которая обращается к различиям между управляемым кодом на 32 и 64 бита к его блогу сегодня. Для суммирования в основном только указателей изменяют размер, целые числа - все еще 32 бита.

Можно найти сообщение здесь.

2
ответ дан 4 December 2019 в 22:30
поделиться

http://en.wikipedia.org/wiki/64-bit предлагает (Вы могли бы найти более авторитетный источник, этот - первый, которого я нашел), что предложения Microsoft "на 64 бита" используют 64-разрядные указатели с 32-разрядными целыми числами.

http://www.anandtech.com/guides/viewfaq.aspx?i=112 (и я не знаю, насколько защищенный это), говорит,

Для сведения чрезмерного увеличения размера кода к минимуму AMD на самом деле устанавливает размер операнда данных по умолчанию на 32 бита в 64-разрядном способе адресации. Мотивация - то, что 64-разрядные операнды данных вряд ли будут необходимы и могли повредить производительность; в тех ситуациях, где 64-разрядные операнды данных желаемы, они могут быть активированы с помощью нового префикса REX (woohoo, еще один x86 префикс инструкции :)).

1
ответ дан 4 December 2019 в 22:30
поделиться

Если Вы не планируете наличие значения, превышают 2 миллиарда, используют целочисленное значение. Нет никакой причины использовать дополнительное пространство для воспринятого выигрыша в производительности.

И вопреки тому, что могут сказать другие люди на этом потоке, пока Вы не измеряете преимущество такой мелочи как это, это находится только в воспринятом преимуществе.

1
ответ дан 4 December 2019 в 22:30
поделиться

32-разрядный ЦП обрабатывает 32-разрядные целые числа быстрее. 64-разрядный обрабатывает 64-разрядные целые числа быстрее; просто думайте об этом - или необходимо сместить биты на 32 бита все время или потратить впустую 32 бита для каждого 32 бита, который является по существу тем же как использованием 64-разрядной переменной без преимуществ 64-разрядной переменной. Другая опция была бы, встраивая дополнительную схему в ЦП так, чтобы смещение не было необходимо, но очевидно который увеличил бы производственные затраты. Это - то же для 32-разрядных центральных процессоров, обрабатывающих 16-разрядные или 8-разрядные переменные.

Я не уверен, но я не был бы удивлен, был ли вариант на 64 бита Платформы.NET немного более оптимизирован для использования longs - но это - просто предположение с моей стороны.

-2
ответ дан 4 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

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