Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Google驱动器下载性能问题_Java_Multithreading_Performance_Google Drive Api - Fatal编程技术网

Java Google驱动器下载性能问题

Java Google驱动器下载性能问题,java,multithreading,performance,google-drive-api,Java,Multithreading,Performance,Google Drive Api,我从Google Drive下载一些文件时遇到性能问题 以下代码在4个具有不同文件的并行线程中执行 serverfile = _drive.files().get(fileid).execute(); outstream = java.nio.file.Files.newOutputStream(tempPath.getPath()); Files.Get request = _drive.files().get(serverfile.getId()); request.executeMedi

我从Google Drive下载一些文件时遇到性能问题

以下代码在4个具有不同文件的并行线程中执行

serverfile = _drive.files().get(fileid).execute();
outstream = java.nio.file.Files.newOutputStream(tempPath.getPath());

Files.Get request = _drive.files().get(serverfile.getId());
request.executeMediaAndDownloadTo(outstream);
我还尝试了不同的实现

serverfile = _drive.files().get(fileid).execute();
outstream = java.nio.file.Files.newOutputStream(tempPath.getPath());

URL url = new URL(serverfile.getDownloadUrl());
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Bearer " + accesstoken);

IOUtils.copy(connection.getInputStream(), outstream);
connection.disconnect();
这段代码在我的四核Macbook Pro上导致了250%-300%的CPU负载。 如果我尝试使用dropbox api执行类似的任务,那么CPU负载就会低得多

有什么我可以优化,以大幅减少CPU负载


我发现一件事是它与下载速度相关。我有一个100Mbit/s的互联网连接,如果我将速度限制到2 MBit/s,CPU使用率将低于10%。

您可以尝试使用普通的旧Java下载媒体,从而绕过Google库。执行files.get以获取文件对象。然后使用它的downloadUrl属性通过一个简单的Java http请求获取媒体。

我想我在第二个代码段中完成了这一点。或者你的意思不同?我的错,我没有读第二段。版本2是纯Java获取https,因此无法进一步优化。您能否澄清两个代码示例中的哪一个使用了250%-300%的CPU负载?两者消耗的量相同。您下载的文件有多大?是很多小文件还是几个大文件?我使用了一个混合文件集,所以文件大小在几kB到200MB之间。如果我只使用大的还是小的,这没有什么区别。