나는 100 000 개가 넘는 파일을 반복하고 상대 경로를 일부 루트 디렉토리로 가져오고 코드는 작동하지만 느리지 만 다른 코드와 비교할 때 속도가 느립니다 (이상한 코드이지만 빠릅니다).자바 파일 relativize 메소드 성능
는 원래 코드가 여기에 있습니다 : 글쎄 루프에 대한 첫 번째
File file, URI rootDirURI
for() {
blabla = rootDirURI.relativize(file.toURI()).getPath()
}
대
File file, URI rootDirURI
for() {
String rootDirPath = rootDirURI.getPath().substring(1); // cut the first slash
rootDirPath = rootDirPath.replaceAll("/", "\\\\"); // correct windows slashes
String finalPath = file.getAbsolutePath().replace(rootDirPath, ""); // clear the root path: relativize
blabla = finalPath.replace("\\", "/"); // slashes
}
이상 다음 2 분 적은 다음 2 초 두 번째 실행을 실행 ... 파일이 UNC 경로를 통해로드되지만 for 루프는 Files.walkFileTree가 실행 된 후입니다. \\ 192.168.1.x \ public \ something과 같은 UNC 경로를 타겟으로하는 파일 시스템에 심볼릭 링크를 만들었습니다. 첫 번째 부분은 ArrayList의 모든 항목을로드하고 두 번째 부분은 ArrayList의 파일에 대한 일부 작업 (코드 루프 위)을 적용합니다.
성능이 저조한가 아니면 상대방이 상대 화하는 것입니까?