Хобрук: Ваш путь к мастерству в программировании

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

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

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

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

  1. Каковы последствия использования только одного экземпляра FileWriter?
  2. Будет ли значительное изменение скорости, когда мы изменим средство записи файлов с нескольких экземпляров на один экземпляр?

  • Рассматривали ли вы просто использование регистратора (либо системный регистратор Java, либо что-то вроде log4j)? Это позаботится обо всех ваших проблемах с синхронизацией, даст вам больше возможностей для настройки и будет работать очень хорошо. 18.01.2011

Ответы:


1

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

18.01.2011

2

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

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

18.01.2011
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..