Android性能测试工具:磁盘资源 | 您所在的位置:网站首页 › 安卓硬盘检测软件下载 › Android性能测试工具:磁盘资源 |
最近小V面试,发现大家对android性能测试工具还是有许多不知道的, 我在这里拓展大伙的思路吧。 我们通常把性能测试工具,按照使用目的和测试类型类分类。这里小V打算从测试类型开始说,可能会更加符合大家的逻辑。 资源类性能测试工具 我们先说资源类的性能测试工具吧。
磁盘资源 关于磁盘资源,我们可以理解成空间和IO两个类型的资源。 空间资源 df指令 可以用busybox的df指令或者自带的df获取,当然busybox的df指令更加好,信息更加详细。使用方法很简单,adb shell df 就OK. 详见:http://blog.csdn.net/conowen/article/details/7262735 调用私有API:getPackageSizeInfo 详见:http://www.baidufe.com/item/8786bc2e95a042320bef.html dumpsys diskstats指令 Latency: 5ms [512B Data Write] Data-Free: 362888K / 1161104K total = 31% free Cache-Free: 116756 K / 120900K total = 96% free System-Free: 133036K / 806284K total = 16% free dumpsys devicestoragemonitor @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) != PackageManager.PERMISSION_GRANTED) { pw.println("Permission Denial: can't dump " + SERVICE + " from from pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()); return; } pw.println("Current DeviceStorageMonitor state:"); pw.print(" mFreeMem="); pw.print(Formatter.formatFileSize(mContext, mFreeMem)); pw.print(" mTotalMemory="); pw.println(Formatter.formatFileSize(mContext, mTotalMemory)); pw.print(" mFreeMemAfterLastCacheClear="); pw.println(Formatter.formatFileSize(mContext, mFreeMemAfterLastCacheClear)); pw.print(" mLastReportedFreeMem="); pw.print(Formatter.formatFileSize(mContext, mLastReportedFreeMem)); pw.print(" mLastReportedFreeMemTime="); TimeUtils.formatDuration(mLastReportedFreeMemTime, SystemClock.elapsedRealtime(), pw); pw.println(); pw.print(" mLowMemFlag="); pw.print(mLowMemFlag); pw.print(" mMemFullFlag="); pw.println(mMemFullFlag); pw.print(" mClearSucceeded="); pw.print(mClearSucceeded); pw.print(" mClearingCache="); pw.println(mClearingCache); pw.print(" mMemLowThreshold="); pw.print(Formatter.formatFileSize(mContext, mMemLowThreshold)); pw.print(" mMemFullThreshold="); pw.println(Formatter.formatFileSize(mContext, mMemFullThreshold)); pw.print(" mMemCacheStartTrimThreshold="); pw.print(Formatter.formatFileSize(mContext, mMemCacheStartTrimThreshold)); pw.print(" mMemCacheTrimToThreshold="); pw.println(Formatter.formatFileSize(mContext, mMemCacheTrimToThreshold)); } DISK IO资源StrictMode 可以分析到许多DISK IO在主线程耗时的情况。之前就遇到过sharepreference 在主线程调用commit,在主线程耗时800ms以上。解决方法有么?可以用apply,这个相对来说是一个异步的commit方法。 dumpsys dbinfo [pkgname] eg:dumpsys dbinfo com.qzone 可以分析sqlite的耗时 Connection pool for /data/data/com.qzone/databases/cfcd208495d565ef66e7dff9f98764da: Open: true Max connections: 1 Available primary connection: Connection #0: isPrimaryConnection: true onlyAllowReadOnlyOperations: true Most recently executed operations: 0: [2014-03-29 19:56:49.831] executeForCursorWindow took 0ms - succeeded, sql="SELECT * FROM QzoneUser" 1: [2014-03-29 19:56:49.830] prepare took 0ms - succeeded, sql="SELECT * FROM QzoneUser" 2: [2014-03-29 19:56:49.808] execute took 20ms - succeeded, sql="COMMIT;" 3: [2014-03-29 19:56:49.807] executeForLastInsertedRowId took 1ms - succeeded, sql="INSERT OR REPLACE INTO Qzone User(account,uin,nickName,vipType,vipLevel) VALUES (?,?,?,?,?)", bindArgs=["189272879", 189272879, "澶╁ぉ鐖辨櫞澶?, 0, 7] 4: [2014-03-29 19:56:49.805] execute took 2ms - succeeded, sql="BEGIN EXCLUSIVE;" 5: [2014-03-29 19:55:20.223] executeForCursorWindow took 0ms - succeeded, sql="SELECT * FROM QzoneUser" 6: [2014-03-29 19:55:20.222] prepare took 1ms - succeeded, sql="SELECT * FROM QzoneUser" 7: [2014-03-29 19:55:20.206] execute took 16ms - succeeded, sql="COMMIT;" 8: [2014-03-29 19:55:20.205] executeForLastInsertedRowId took 1ms - succeeded, sql="INSERT OR REPLACE INTO Qzone User(account,uin,nickName,vipType,vipLevel) VALUES (?,?,?,?,?)", bindArgs=["189272879", 189272879, "澶╁ぉ鐖辨櫞澶?, 0, 7] 9: [2014-03-29 19:55:20.205] execute took 0ms - succeeded, sql="BEGIN EXCLUSIVE;" 10: [2014-03-29 19:55:17.819] executeForCursorWindow took 0ms - succeeded, sql="SELECT * FROM QzoneUser" 11: [2014-03-29 19:55:17.818] prepare took 0ms - succeeded, sql="SELECT * FROM QzoneUser" 12: [2014-03-29 19:55:17.805] execute took 13ms - succeeded, sql="COMMIT;" 13: [2014-03-29 19:55:17.805] executeForLastInsertedRowId took 0ms - succeeded, sql="INSERT OR REPLACE INTO Qzon eUser(account,uin,nickName,vipType,vipLevel) VALUES (?,?,?,?,?)", bindArgs=["189272879", 189272879, "澶╁ぉ鐖辨櫞澶?, 0, 7] 14: [2014-03-29 19:55:17.805] execute took 0ms - succeeded, sql="BEGIN EXCLUSIVE;" 15: [2014-03-29 19:55:16.373] executeForCursorWindow took 1ms - succeeded, sql="SELECT * FROM cover WHERE uin='1 89272879'" 16: [2014-03-29 19:55:16.373] prepare took 0ms - succeeded, sql="SELECT * FROM cover WHERE uin='189272879'" 17: [2014-03-29 19:55:16.350] execute took 22ms - succeeded, sql="COMMIT;" 18: [2014-03-29 19:55:16.350] executeForLastInsertedRowId took 0ms - succeeded, sql="INSERT OR REPLACE INTO cove r(uin,data) VALUES (?,?)", bindArgs=[189272879, ] 19: [2014-03-29 19:55:16.350] prepare took 0ms - succeeded, sql="INSERT OR REPLACE INTO cover(uin,data) VALUES ( ?,?)" Available non-primary connections: Acquired connections: Connection waiters:
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |