Java FileWriter: повторное открытие / закрытие файла (несколько экземпляров) по сравнению с одним открытием / закрытием (один экземпляр) в среде клиент-сервер - PullRequest
1 голос
/ 18 января 2011

В настоящее время у нас есть система клиент-сервер. У нас есть это приложение, которое будет отслеживать производительность каждой транзакции в нашей системе (время начала запроса / обработки / sql запросов ... и т. Д.), Записывая журналы в текстовый файл на компьютере клиента.

Наша текущая реализация была при каждом запросе, мы будем открывать файл журнала, записывать детали транзакции, а затем закрывать файл для каждого запроса, который мы делаем. Существует также отдельный экземпляр FileWriter для каждого клиента.

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

  1. Каковы последствия использования одного экземпляра FileWriter?
  2. Произойдет ли значительное изменение скорости, когда мы изменим Filewriter с Multiple Instance на один экземпляр?

Ответы [ 2 ]

0 голосов
/ 18 января 2011

Ваша платформа может заставить вас использовать только один FileWriter для одного и того же файла. Держите ручку открытой. Вы должны хотя бы использовать PrintWriter, который обрабатывает внутреннюю синхронизацию потоков. С точки зрения производительности вы можете обменять безопасность на производительность, используя (или нет) FileDescriptor.sync(). Вы можете создать FileWriter, используя FileDescriptor, который вы можете получить от FileOutputStream.

Я предпочитаю просто использовать log4j или собственный механизм ведения журналов Java.

0 голосов
/ 18 января 2011

Если вы много пишете, вы можете увидеть улучшение производительности при одном открытом закрытии файла. Тем не менее, я полагаю, что любой выигрыш не стоил бы усилий, так как кажется, что это капля в море по сравнению с другими вашими действиями (особенно sql-запросами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...