Lua цели больше в удобочитаемости, чем краткость, все же делает честные 37 символы:
function p(s)return s==s:reverse()end
вариант, только для забавы (тот же размер):
p=function(s)return s==s:reverse''end
версия JavaScript является более подробной (55 символов), потому что она не делает имеет строковую функцию реверса:
function p(s){return s==s.split('').reverse().join('')}
Предел виртуального адресного пространства для процесса Win32 составляет 1,5 ГБ (не совсем верно). Кроме того, в .NET framework есть ограничение на процент памяти процесс .NET может потреблять. В файле machine.config есть элемент processModel с атрибутом memoryLimit, который представляет собой% доступной памяти, которую может использовать процесс. Значение по умолчанию - 60%.
Если машина, на которой вы работаете, имеет 2 ГБ памяти или вы не включили переключатель / 3 ГБ в BOOT.INI, тогда вы получите ~ 1,3 ГБ памяти на процесс.
Я не могу найти статью в базе знаний, но если я правильно помню, .NET 1.x не может обращаться за пределами лимита 1,5 ГБ (1,8 ГБ?) Независимо от ваших настроек.
http://blogs.msdn.com/tmarq/archive/2007/06/25/some-history-on-the-asp-net-cache-memory-limits.aspx http : //social.msdn.microsoft.com/Forums/en-US/clr/thread/c50ea343-b41b-467d-a457-c5a735e4dfff http://www.guidanceshare.com/wiki/ASP.NET_1.1_Performance_Guidelines_ -_Caching # Configure_the_Memory_Limit
Наличие огромных блоков памяти - плохая идея, даже в 64-битной версии. Вы получаете большие проблемы с непрерывной памятью и фрагментацией.
Проблема здесь в поиске непрерывного блока. Вы можете попробовать включить режим 3 ГБ (что может помочь найти еще несколько байтов), но я действительно не советую этого делать. Вот ответы:
Вы также можете прочитать блог Эрика Липперта (у него, кажется, есть блог запись для каждого распространенного вопроса .NET ...)
В последнее время я занимаюсь обширным профилированием памяти в .NET в 32-битном процессе. Нас всех бомбардирует идея, что мы можем выделить до 2.4 ГБ (2^31) в .NET-приложении, но, к сожалению, это не так :(. Процесс работы приложения занимает столько места, и операционная система отлично справляется с ним, однако, сама .NET, похоже, имеет свои собственные накладные расходы, которые составляют около 600-800 МБ для типичных реальных приложений, которые превышают лимит памяти. Это означает, что как только вы выделяете массив целых чисел, который занимает около 1.4Гб, вы должны ожидать появления функции OutOfMemoryException().
Очевидно, что в 64-битном варианте этот лимит возникает гораздо позже (давайте пообщаемся через 5 лет :)), но общий размер всего в памяти также увеличивается (я нахожу, что это ~1. От 7 до ~2 раз) из-за увеличенного размера слова.
Я точно знаю, что идея виртуальной памяти от операционной системы определенно НЕ дает практически бесконечное пространство для выделения в рамках одного процесса. Она только там, чтобы все 2.4 Гб было адресовано ко всем (многим) приложениям, запущенным за один раз.
Надеюсь, это понимание поможет.
Я изначально ответил на кое-что связанное с этим (я все еще новичок, так что не уверен, как я должен делать эти ссылки):