Файлы на XP: выключает “прошлое время доступа”, безопасное?

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

6
задан Mark 17 September 2008 в 13:17
поделиться

9 ответов

Это - хорошая альтернатива, но это будет влиять на некоторые инструменты. Как Сервис Удаленной системы хранения и другой использовать, которые зависят от статистики доступа к файлу для оптимизации файловой системы (т.е. Дефрагментация Norton)

1
ответ дан 8 December 2019 в 16:13
поделиться

Я не попробовал это на поле Windows (я буду сегодня вечером, спасибо), но подобная вещь на Linux (noatime опция при монтировании диска) значительно ускорила вещи.

Я не могу думать ни о каком использовании, где прошлое время доступа было бы полезно кроме для аудита целей и, даже затем, Windows хранит пользователя, который получил доступ к нему? Я знаю, что Linux не делает.

4
ответ дан 8 December 2019 в 16:13
поделиться

Из документации SetFileTime:

"NTFS задерживает обновления прошлого времени доступа для файла максимум на один час после последнего доступа".

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

Править:

Относительно того, почему автор той статьи требовал 10x ускорение, я думаю, что он приписал свое ускорение неправильной вещи: он также отключил 8,3 поколений имени файла. Для генерации 8,3 имен файла для файла NTFS должен в основном генерировать каждую возможность, в свою очередь затем видят, используется ли это уже (никакая ссылка; я уверен, что Raymond говорил об этом, но не может найти ссылку). Если Ваши файлы вся доля те же первые шесть символов, Вы будете укушены этой проблемой, и corrolary - Вы, должен поместить символы, которые дифференцируют файлы в первых шести символах, таким образом, они не сталкиваются. Выключение поколения краткого названия предотвратит это.

7
ответ дан 8 December 2019 в 16:13
поделиться

это улучшит производительность немного. Кроме этого это не сделает намного больше (Вы не сможете видеть, когда к файлу в последний раз получили доступ, конечно). Мне повернули его по умолчанию, когда я устанавливаю Windows XP с помощью nLite к сокращению чрезмерного увеличения размера, мне не нужно.

0
ответ дан 8 December 2019 в 16:13
поделиться

Я предложил бы, чтобы Вы попробовали его и видели, имеет ли это значение.

Однако я пессимистичен об этом на самом деле имеющем любое значение, с тех пор в больших/чистых сборках Вы будете выписывать большие объемы данных так или иначе, так корректировка времен доступа к файлу не заняла бы так много времени (плюс, он будет, вероятно, кэшироваться так или иначе).

Я хотел бы быть доказанным неправым все же.


Результаты:

Работал некоторые основываются на кодовой базе на работе и в конфигурациях отладки и в выпуска с прошлым временем доступа, включенным и отключенным.

Наш исходный код составляет приблизительно 39 МБ (48 МБ размером на диске), и мы создаем приблизительно половину из этого для конфигурации, которую я создал для этих тестов. Отладочная сборка генерировала 1,76 ГБ временных и выходных файлов, в то время как выпуск генерировал приблизительно 600 МБ таких данных. Мы основываемся на командной строке с помощью комбинации Муравья, и командная строка Visual Studio создала инструменты.

Моя машина является Core 2 Duo 3 ГГц, с 4 ГБ поршня, HDD на 7200 об/мин, выполняя Windows XP 32 бита.

Создание с прошлым отключенным временем доступа:

Времена отладки = 6:17, 5:41

Времена выпуска = 6:07, 6:06

Создание с прошлым включенным временем доступа:

Времена отладки = 6:00, 5:47

Времена выпуска = 6:19, 5:48

В целом я не заметил различия между этими двумя режимами, поскольку в обоих случаях файлы уже наиболее вероятны в системном кэше, таким образом, это должно просто читать из памяти.

Я полагаю, что Вы получите самый большой удар для своего маркера, просто реализовав надлежащие предварительно скомпилированные заголовки (не автоматически сгенерированные, которые Visual Studio создает в проекте). Мы реализовали это несколько лет назад на работе (когда кодовая база была намного меньшей), и она сократила наше время изготовления к одной трети того, каково это было.

4
ответ дан 8 December 2019 в 16:13
поделиться

Для занятых серверов, отключая прошлое время доступа обычно хорошая идея. Единственная потенциальная оборотная сторона - то, если существуют сценарии, которые используют прошлое время доступа для, например, скажите, что файл больше не пишется.

Тем не менее, если Вы надеетесь улучшать время изготовления относительно проекта C++, я настоятельно рекомендую, чтобы Рекурсивное чтение Сделало Продуманными Вредный. Статья составляет приблизительно старое десятилетие, но точки, которые она делает о том, как рекурсивные определения в наших сценариях сборки вызывают долгое время изготовления, все еще определенно стоит понять.

0
ответ дан 8 December 2019 в 16:13
поделиться

Отключение времени доступа полезно при использовании ssd's (твердотельные накопители - карты, карты памяти и т.д.), поскольку это сокращает количество записей к диску. Все твердотельные устройства хранения имеют жизнь, которая измеряется количеством записей, которые могут быть сделаны к каждому отдельному адресу. Некоторые медиа указывают минимум 100's тысяч и некоторых даже 1 миллион. Операционные системы и другие исполняемые файлы могут получить доступ ко многим файлам в единственной операции, а также пользовательском доступе к документу. Это относилось бы к eee ПК, встроенные системы и другие.

0
ответ дан 8 December 2019 в 16:13
поделиться

Я не хочу привлекать внимание далеко от "прошлого времени доступа" вопрос, но могли бы быть другие способы ускорить Ваши сборки. Не зная контекст и Вашу установку проекта, трудно сказать, что могло бы быть медленным, но могли бы быть некоторые вещи, которые могли бы помочь:

Создайте сборки "uber". Таким образом, создайте единственную компиляцию uber.cpp файл, который содержит набор строк как

#include "file1.cpp"
#include "file2.cpp"

Вы могли бы испытать затруднения конфликтовать имена статической переменной, но в этом обычно легко разобраться. Начальная настройка является своего рода болью, но время изготовления может увеличиться существенно. Для нас самый большой недостаток состоит в том, что в студии разработчика, Вы не можете щелкнуть правой кнопкой по файлу и сказать 'компиляцию', если тот файл является частью сборки uber. Это не имеет большого значения все же. У нас есть отдельные конфигурации сборки для сборок 'uber', которые компилируют uber файлы, но исключают отдельные cpp файлы из процесса сборки. Если Вы нуждаетесь в большем количестве информации, оставляете комментарий, и я могу получить Вас это. Кроме того, оптимизатор имеет тенденцию делать немного лучшее задание со сборками uber.

Кроме того, у Вас есть большое количество, включают файлы, или много depencendies между включает файлы? Если так, это решительно замедлит время изготовления.

Вы используете предварительно скомпилированные заголовки? В противном случае Вы могли бы изучить это как решение, поскольку это поможет также.

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

Так или иначе, жаль для небольшого ухода в подпрограмму темы немного, но предложение под рукой, чтобы измениться, как прошлое время доступа файла установлено, казалось, было своего рода 'молотовым' решением.

0
ответ дан 8 December 2019 в 16:13
поделиться

Для Mike Dimmick:

Попробуйте подключить USB-накопитель многими файлами и скопируйте их на внутренний диск. Это также случай в дополнение к компиляции программы (который описан в оригинальном посте).

-1
ответ дан 8 December 2019 в 16:13
поделиться
Другие вопросы по тегам:

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