1

我正在分析负责在磁盘上存储二进制文件的 J2EE 应用程序。在分析过程中,我们发现了大量的 IO 瓶颈,我们需要解决这些问题。但是,我们也看到这行代码的速度变慢了:

// Example URI path
String filename = "/path/to/file.txt"  

// This line at load takes almost 500 ms
return new File(filename).toURI();

有问题的方法接受文件路径并返回可以写入文件的文件路径。

由于减速只发生在负载时,我猜这个过程在这条线上是 IO 绑定的。是这样吗?如果是这样,是否有更好的方法来分配性能更好的 URI?

4

1 回答 1

2

这是该方法的源代码:

   public URI toURI() {
    try {
        File f = getAbsoluteFile();
        String sp = slashify(f.getPath(), f.isDirectory());
        if (sp.startsWith("//"))
        sp = "//" + sp;
        return new URI("file", null, sp, null);
    } catch (URISyntaxException x) {
        throw new Error(x);     // Can't happen
    }
    }

“getAbsoluteFile()”确实是 IO 绑定的,因为它必须访问文件系统才能将任何相对路径解析为绝对路径(通过链下的 FileSystem.resolve() 方法)。

于 2012-06-06T17:17:05.693 回答