Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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
Aws SimpleDB,在android中的响应速度很慢_Android_Amazon Web Services - Fatal编程技术网

Aws SimpleDB,在android中的响应速度很慢

Aws SimpleDB,在android中的响应速度很慢,android,amazon-web-services,Android,Amazon Web Services,我正在使用Aws SimpleDb为我的android应用程序存储数据。使用AWS android SDK,我得到了非常晚的响应,是否有任何方法可以改进它,在浏览器中,它在300毫秒内为我获取数据。虽然我只发送了40行的请求,但它需要大约5到10秒的时间,比这要多一些倍 这就是我正在做的 private ThreadPoolExecutor threadPool = new ThreadPoolExecutor(poolSize, maxPoolSize, keepAliveTime, Ti

我正在使用Aws SimpleDb为我的android应用程序存储数据。使用AWS android SDK,我得到了非常晚的响应,是否有任何方法可以改进它,在浏览器中,它在300毫秒内为我获取数据。虽然我只发送了40行的请求,但它需要大约5到10秒的时间,比这要多一些倍

这就是我正在做的

 private ThreadPoolExecutor threadPool = new ThreadPoolExecutor(poolSize, maxPoolSize,  keepAliveTime, TimeUnit.SECONDS, threadsQueue);

private void getArticles() {

String[] categories = {"kids", "Boys", "Girls",
    "Men", "Women"};

for(final String category : categories) {
runTask(new Runnable() {

  @Override
  public void run() {
    Log.e(TAG, "getting articles for category : " + category);
    String select = "select * from shopDatabase where category = '" + category + "' AND relationType " +
          "= 'none' AND articlePushTime > '2013-04-01 05:46:03.719 GMT+00:00' AND publishDateTime > '2013-04-01 05:46:03.719 GMT+00:00' " +
          " AND score > '0' order by score  desc limit 40";
  SelectRequest selectRequest = new SelectRequest(select);
  selectRequest.setConsistentRead(true);
    List<Item> articles = sdbClient.select(selectRequest).getItems();
    if(articles != null) {
      Logger.log("ERROR", "SQLiteActivity", "articles size is : " + articles.size() + " for category : " + category, runCount);
    } else {
      Logger.log("ERROR", "SQLiteActivity", "articles size is : articles.size() = 0 OR NULL for category : " + category, runCount);
     }
     onDownload.onDownload();
    }
   });
  }
}

什么是runTask?需要注意的一点是,您正在并行启动许多任务,这可能不是一个好主意。此外,如果这些任务具有后台优先级,则它们必须总共占用10%的CPU时间。这意味着解组所需的时间比必要的时间要长得多;此外,数据库可能不太喜欢并行请求。在runTask中,我使用线程池。我在没有线程池的情况下尝试了它,但反应也是一样的。我不确定没有线程池的确切意思,但我建议你尝试按照我其他评论的链接中的建议设置线程优先级,看看它是否加快了速度-很可能它会将速度提高十倍,如果解组确实是这里的问题,AWS响应通常非常快,因此我不认为网络延迟是一个主要问题。我已经编辑并添加了runTask方法和ThreadPoolExecutor,这可能会提供更好的图片。没有线程池意味着不使用任何线程。返回的结果集有多大?您正在调用select*,因此它将获取40行中的所有数据。你的互联网连接有多快?您的设备是否使用WiFi或蜂窝网络?另外,如何向SimpleDB客户端对象提供凭据?
 04-05 11:39:30.724: E/SQLiteActivity(14448): getting articles for category : kids
 04-05 11:39:49.914: E/SQLiteActivity(14448): articles size is : 40 for category : kids


 04-05 11:39:30.754: E/SQLiteActivity(14448): getting articles for category : Boys
 04-05 11:39:47.644: E/SQLiteActivity(14448): articles size is : 40 for category : Boys


 04-05 11:39:48.964: E/SQLiteActivity(14448): getting articles for category : Girls
 04-05 11:40:02.464: E/SQLiteActivity(14448): articles size is : 40 for category : Girls


 04-05 11:39:49.924: E/SQLiteActivity(14448): getting articles for category : Men
 04-05 11:40:02.724: E/SQLiteActivity(14448): articles size is : 40 for category : Men


 04-05 11:40:02.664: E/SQLiteActivity(14448): getting articles for category : Women
 04-05 11:40:10.024: E/SQLiteActivity(14448): articles size is : 40 for category : Women