gpt4 book ai didi

android - 从 Android 上传到 Google Cloud Storage 速度慢 5 kbps

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:04 26 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,并希望使用 Google Cloud Storage 来存储可能较大的媒体文件。我正在为 JSON API 使用 Java 客户端库:com.google.api.services.storage。

我的问题是性能。我确定我一定做错了什么。我有文件上传工作,但它几乎是可笑的慢。传输一个 1.5 MB 的图像文件大约需要 5 分钟,所以大约是 5 kbps,这对我的应用程序来说是无法使用的。我已经为我的应用程序启用了计费功能,但我使用的是免费套餐。这肯定不是预期的性能水平?我正在宽带 wifi 上的 Galaxy S4 上对此进行测试。我正在使用服务帐户 OAUth 客户端 key 访问 GCS。

我尝试过使用和不使用 gzip 编码,使用和不使用直接(不可恢复)上传,以及使用不同的 block 大小——默认值、最小值、最小值的倍数等。在所有情况下我都得到类似的结果。这是我的上传功能:

public void uploadFile(String bucketName, String filePath, String mimeType, String gcsFilename, IOProgress ioProgress)
throws IOException {

StorageObject object = new StorageObject();
object.setBucket(bucketName);

File file = new File(filePath);
Long fileSize = file.length();
Log.d(TAG, "uploadFile START: " + bucketName + ":" + gcsFilename + " -> " + filePath);

try (InputStream stream = new FileInputStream(file)) {
InputStreamContent content = new InputStreamContent(mimeType,
stream);

Storage.Objects.Insert insert = storage.objects().insert(
bucketName, null, content);
insert.setName(gcsFilename);
insert.getMediaHttpUploader().setDisableGZipContent(true); // this seems to help to disable... at least when debugging
// insert.getMediaHttpUploader().setDirectUploadEnabled(true);
insert.getMediaHttpUploader().setChunkSize(MediaHttpUploader.MINIMUM_CHUNK_SIZE);
if (ioProgress != null) {
insert.getMediaHttpUploader().setProgressListener(new CloudUploadProgressListener(ioProgress, fileSize));
}

insert.execute();
Log.d(TAG, "uploadFile FINISH: " + bucketName + ":" + gcsFilename + " -> " + filePath);
}
}

最佳答案

我的问题有两个。

1) 我没有使用 com.google.api.client.http.javanet.NetHttpTransport,而是使用了 com.google.api.client.http.apache.ApacheHttpTransport,速度提高了大约 5 倍。

这还解决了一个单独的问题,即在执行 GCS 传输后立即尝试使用 Google Cloud Endpoints(使用 NetHttpTransport)时出现套接字错误。

2) 尝试在使用 ADB 调试的同时运行上传是造成其余差异的原因。在非 Debug模式下运行 ApacheHttpTransport 使我的传输速度达到约 1.4 Mbps,而我的本地网络容量约为 1.8 Mbps。

顺便说一句,我尝试使用 JetS3t 但遇到了这个确切的问题:IncompatibleClassChangeError exception is thrown when using JetS3t on Android

关于android - 从 Android 上传到 Google Cloud Storage 速度慢 5 kbps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com