Java FileWriter:客户端 - 服务器环境中的重复文件打开/关闭(多实例)与单一打开/关闭(单实例)

时间:2011-01-18 01:51:49

标签: java file-io client-server

我们目前有一个客户端 - 服务器系统。我们有这个应用程序,它将通过将日志写入客户端PC上的文本文件来监视系统上每个事务的性能(请求/处理/ sql查询的开始时间等)。

我们当前的实现是针对每个请求,我们将打开日志文件,写入事务的详细信息,然后为我们发出的每个请求关闭文件。每个客户端都有一个单独的FileWriter实例。

我们想知道在整个应用程序的使用过程中是否更好地打开文本文件,然后在使用FileWriter的单个实例注销时关闭它。

  1. 仅使用FileWriter的单个实例会产生什么影响?
  2. 当我们将文件编写器从多个实例更改为单个实例时,是否会有显着的速度变化?

2 个答案:

答案 0 :(得分:0)

如果您正在进行大量编写,那么只需打开一个文件即可看到性能提升。但是,我想任何增益都不值得付出努力,因为与你正在做的其他动作(特别是sql查询)相比,这听起来像是一桶水。(

答案 1 :(得分:0)

您的平台可能会强制您仅对同一文件使用一个FileWriter。保持手柄打开。 您至少应该使用在内部处理线程同步的PrintWriter。 在性能方面,您可以使用(或不使用)FileDescriptor.sync().来交换安全性能 您可以使用FileWriter创建FileDescriptor,您可以从FileOutputStream获取。{/ p>

我认为只使用log4j或Java自己的日志记录机制。