把之前测试performance的写完,和androbench测出来的有些差距,有一些小问题,以后有时间再补上。暂时不搞这个了,接下来专心研究文件系统。

package com.example.singleimport android.content.Intent
import android.os.*
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.io.*
import java.nio.ByteBuffer
import java.nio.channels.FileChannel
import java.util.*class FlashPerformanceActivity : AppCompatActivity() {var bundle2: Bundle? = nullvar btn_perfomance: Button? = nullvar btn_return: Button? = nullvar edit: EditText? = nullvar btn_present: TextView? = nullval myhandle = Handler()private var path: String? = nullprivate var mFileWriter: FileWriter? = nullprivate val LENGTH:Long = 1024*1024*10;private var TestResult = ""override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.flash_performance)edit = findViewById(R.id.editText)btn_perfomance = findViewById(R.id.buttonperformance)btn_return = findViewById(R.id.returnflash)btn_present = findViewById(R.id.present)bundle2 = this.intent.extrasbtn_perfomance!!.setOnClickListener(buttonListener())btn_return!!.setOnClickListener(buttonListener())}var handler = object : Handler(Looper.getMainLooper()) {override fun handleMessage(msg: Message) {super.handleMessage(msg)if (msg.arg1 == 2) {TestResult += """${msg.obj as String}""".trimIndent()btn_present?.setText(TestResult)}}}internal inner class buttonListener : View.OnClickListener {override fun onClick(v: View) {when (v.id) {R.id.buttonperformance -> {myhandle.post(UpdateThread);}R.id.returnflash -> {val intent2 = Intent()intent2.setClass(this@FlashPerformanceActivity, FlashRwtestActivity::class.java)startActivity(intent2)}else -> {}}}}var UpdateThread: Runnable = object : Runnable {override fun run() {var iBegin: Long = 0var iEnd: Long = 0var iTime = 0var iRBegin: Long = 0var iREnd: Long = 0var iRTime = 0var inTime = 0var start:Long=0var end:Long=0val filenum = 10path = getExternalFilesDir("")!!.absolutePathval buf: Int = edit!!.getText().toString().toInt()try {for (i in 0 until filenum) {val file = File(path + File.separator + "data.txt")val file1 = File(path + File.separator + "data1.txt")mFileWriter = FileWriter(file)val bufWtr = BufferedWriter(mFileWriter, 8 * 1024)start = System.currentTimeMillis()for (count in 0 until LENGTH) {bufWtr!!.write(49)}end = System.currentTimeMillis()inTime += (end - start).toInt()val fileInputStream = FileInputStream(path + File.separator.toString() + "data.txt")val fileOutputStream = FileOutputStream(path + File.separator.toString() + "data1.txt")val inChannel = fileInputStream.channelval outChannel = fileOutputStream.channelval byteBuffer = ByteBuffer.allocateDirect(buf * 1024 * 1024)while (true) {iRBegin = System.currentTimeMillis()val eof = inChannel.read(byteBuffer)if (eof == -1) breakiREnd = System.currentTimeMillis()iRTime += (iREnd - iRBegin).toInt()byteBuffer.flip()iBegin = System.currentTimeMillis()outChannel.write(byteBuffer)iEnd = System.currentTimeMillis()iTime += (iEnd - iBegin).toInt()byteBuffer.clear()}inChannel.close()outChannel.close()file.delete()file1.delete()}SendMyMessage(handler, 2, "Write  file with write buffer size 8k  Time= "+ Integer.toString(inTime) + "ms  Speed=" + LENGTH*filenum / iTime * 1000 / 1024 + "KB/s  " + (LENGTH*filenum   / inTime * 1000 / 1024 / 1024) + "." + (LENGTH*filenum   / inTime * 1000 / 1024) % 1024 + "MB/s");SendMyMessage(handler, 2, "Write  file with write buffer size " +buf +"M  Time= "+ Integer.toString(iTime) + "ms  Speed=" + LENGTH*filenum  / iTime * 1000 / 1024 + "KB/s  " + (LENGTH *filenum  / iTime * 1000 / 1024 / 1024) + "." + (LENGTH *filenum  / iTime * 1000 / 1024) % 1024 + "MB/s");SendMyMessage(handler, 2, "Read  file with write buffer size " + buf +"M Time= "+ Integer.toString(iRTime) + "ms  Speed=" + LENGTH *filenum / iRTime * 1000 / 1024 + "KB/s  " + (LENGTH *filenum / iRTime * 1000 / 1024 / 1024) + "." + (LENGTH*filenum  / iRTime * 1000 / 1024) % 1024 + "MB/s");} catch (e: IOException) {e.printStackTrace()}Thread.sleep(1000);}fun SendMyMessage(msghandler: Handler, type: Int, msg: String?) {val MSG = msghandler.obtainMessage()MSG.obj = msgMSG.arg1 = typemsghandler.sendMessage(MSG)}}}

下面是另一种方法,比上面一种速度慢。

package com.example.rwpimport android.content.DialogInterface
import android.os.*
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import java.io.*
import java.text.SimpleDateFormat
import java.util.*class MainActivity : AppCompatActivity() {var bundle2: Bundle? = nullvar btn_cycle: Button? = nullvar edit: EditText? = nullvar btn_present: TextView? = nullval myhandle = Handler()private var path: String? = nullprivate var mFileWriter: FileWriter? = nullprivate var mFileReader: FileReader? = nullprivate val LENGTH = 1024*1024;var mWriterBuffer: CharArray? = nullvar mReaderBuffer: CharArray? = nullprivate var str: String? = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"private var TestResult = ""override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)edit = findViewById(R.id.editText)btn_cycle = findViewById(R.id.buttoncycle)btn_present = findViewById(R.id.present)bundle2 = this.intent.extrasbtn_cycle!!.setOnClickListener(buttonListener())}var handler = object : Handler(Looper.getMainLooper()) {override fun handleMessage(msg: Message) {super.handleMessage(msg)if (msg.arg1 == 2) {TestResult += """${msg.obj as String}""".trimIndent()btn_present?.setText(TestResult)}}}internal inner class buttonListener : View.OnClickListener {override fun onClick(v: View) {when (v.id) {R.id.buttoncycle -> {myhandle.post(UpdateThread);}else -> {}}}}var UpdateThread: Runnable = object : Runnable {override fun run() {var iBegin: Long = 0var iEnd: Long = 0var iTime = 0var iRBegin: Long = 0var iREnd: Long = 0var iRTime = 0val random= Random()val filenum = 100var bReturn = true//  val date = Date()// val timeTemp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(date.time)path = getExternalFilesDir("")!!.absolutePath//val file = File(path + File.separator + timeTemp + ".txt")mWriterBuffer = CharArray(LENGTH)mReaderBuffer = CharArray(LENGTH + 10)val buf: Int = edit!!.getText().toString().toInt()SendMyMessage(handler, 2, "Create temp 1M file.")try {for (i in 0 until LENGTH) {val number: Int = random.nextInt(62)mWriterBuffer!![i] = str!![number]}SendMyMessage(handler, 2, "Begin writing.")for (i in 0 until filenum) {val file = File(path + File.separator + i + ".txt")mFileWriter = FileWriter(file)iBegin = System.currentTimeMillis()val bufWtr = BufferedWriter(mFileWriter, buf * 1024)bufWtr!!.write(mWriterBuffer)bufWtr!!.close()iEnd = System.currentTimeMillis()iTime += (iEnd - iBegin).toInt()}SendMyMessage(handler, 2, "Write files with write buffer size " + buf + "K  Time= "+ Integer.toString(iTime) + "ms  Speed=" + LENGTH *filenum/ iTime * 1000 / 1024 + "KB/s " + (LENGTH *filenum/ iTime * 1000 / 1024 / 1024) + "." + (LENGTH *filenum/ iTime * 1000 / 1024) % 1024 + "MB/s");SendMyMessage(handler, 2, "Begin reading.")for (i in 0 until filenum) {val file = File(path + File.separator + i + ".txt")iRBegin = System.currentTimeMillis()mFileReader = FileReader(file)val bufRdr = BufferedReader(mFileReader, buf * 1024)val iRead = bufRdr!!.read(mReaderBuffer)bufRdr!!.close()iREnd = System.currentTimeMillis()iRTime += (iREnd - iRBegin).toInt()if (iRead != LENGTH) {bReturn = false}var bSame = truefor (i in 0 until LENGTH) {if (mReaderBuffer!![i] != mWriterBuffer!![i]) {bSame = false}}if (!bSame) {bReturn = false}if (!bReturn) {SendMyMessage(handler, 3, "Fail")val alertdialogbuilder = AlertDialog.Builder(this@MainActivity)alertdialogbuilder.setMessage("WARNING!!!!")alertdialogbuilder.setPositiveButton("确定", click1)alertdialogbuilder.setNegativeButton("取消", click2)val alertdialog1: AlertDialog = alertdialogbuilder.create()alertdialog1.show()}}SendMyMessage(handler, 2, "Read  files with write buffer size " + buf + "K  Time= "+ Integer.toString(iRTime) + "ms  Speed=" + LENGTH*filenum / iRTime * 1000 / 1024 + "KB/s  " + (LENGTH*filenum / iRTime * 1000 / 1024 / 1024) + "." + (LENGTH*filenum / iRTime * 1000 / 1024) % 1024 + "MB/s");} catch (e: IOException) {e.printStackTrace()}Thread.sleep(1000);}fun SendMyMessage(msghandler: Handler, type: Int, msg: String?) {val MSG = msghandler.obtainMessage()MSG.obj = msgMSG.arg1 = typemsghandler.sendMessage(MSG)}}private val click1 = DialogInterface.OnClickListener { arg0, arg1 -> Process.killProcess(Process.myPid()) }private val click2 = DialogInterface.OnClickListener { arg0, arg1 -> arg0.cancel() }}

【android studio】测试不同buf下flash的读写性能2相关推荐

  1. android studio moudel,Android Studio 添加其他目录下的module

    Android Studio 添加其他目录下的module admin • 2020 年 11 月 07 日 [title]需要操作的原因[/title] 在我们写程序的时候,经常会因为重复性的代码而 ...

  2. android studio3.12,Android Studio V3.12环境下TV开发教程(六)提供卡片视图

    Android Studio V3.12环境下TV开发教程 文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619656 在上一课 ...

  3. Android电视切换回放,Android Studio V3.12环境下TV开发教程(五)建立电视回放应用...

    Android Studio V3.12环境下TV开发教程 文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619382 浏览和播 ...

  4. android studio 测试工具,使用Android Studio进行单元测试

    Android Studio已经到了1.2版本,国内的开发者基本也在从Eclipse向Android Studio进行转变,对于Android开发者,以后必将是Android Studio的天下. 昨 ...

  5. Android Studio中变量有下划线情况的处理

    1 原因 Android Studio的代码中,有时变量会有下划线的情况,如图1所示. 图1 有下划线的变量 如图1所示,String类型的变量input_user具有下划线,其含义是该变量被多次赋值 ...

  6. 苹果笔记本android studio安装教程,MAC下如何安装AndroidStudio

    最近在慢慢往Mac上转移阵地,既然要装AS,那我就记录一下,哈哈,做个笔记,方便以后查找. 一.首先下载 Mac 环境下的 Android Studio 的安装包,为dmg 格式 1.Android ...

  7. android studio 测试连接夜神模拟器

    自己下了一个模拟器,安装完成之后,aS识别不到 夜神官网链接:https://www.yeshen.com/faqs/BkPMgJXx- 小记:win+R ,cmd命令进入默认是c:  直接D: 进入 ...

  8. android studio 测试工具,Android:Studio性能监测工具

    Android Studio 内置了四种性能监测工具Memory Monitor.Network Monitor.CPU Monitor.GPU Monitor,我们可以使用这些工具监测APP的状态, ...

  9. Android studio的sdk tools下没有LLDB的解决办法

    粉丝提问: 博主解答: 解决办法: 点击setting-->plugins-->找到"Android Support"选项,并勾选,然后会提示重启android stu ...

最新文章

  1. a b c d java_java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中...
  2. matlab实时脚本使用
  3. 哈尔特征(Haar-like features)
  4. python opencv 窗口循环显示时,如果用鼠标拖动窗口会导致程序暂停(卡住)(不知道为啥。。。)
  5. python 控制有线网卡_Python 使用指定的网卡发送HTTP请求的实例
  6. 【POJ - 2318】TOYS(计算几何,叉积判断点与直线位置关系,二分)
  7. Develop系列-API Guides-简介-应用基础
  8. python读取png图片只有一个图层_python实现读取并显示图片的两种方法
  9. 移动终端如何远程接入企业的核心系统?
  10. 三种坐标系经纬度转化小工具
  11. 物联网专业要学c语言吗,物联网应用技术专业是文科还是理科
  12. 2022.4月份科研记录【日记】
  13. 什么是OXC(全光交叉)?
  14. 关键点检测方法、人体姿态估计
  15. 王者荣耀头像太小怎么办?调整图片尺寸工具分享
  16. 意外发现一款很好用的开源BI工具——DataEase
  17. Confluence和JIRA区别
  18. 移动端:M站和APP的区别
  19. 机器学习在神策数据的应用
  20. 《BREW进阶与精通——3G移动增值业务运营、定制与开发》一书的网店地址

热门文章

  1. Docker从入门到放弃
  2. 必备干货,程序员进阶升级全攻略!
  3. HTML常用的标签:
  4. 这些富人思维,学会任何一种都可以纵横互联网
  5. 五分钟玩转Andriod开发环境配置
  6. 分布式理论分布式ID生成大全
  7. Audacity合成音频的软件
  8. 使用cordova将Ext JS 6.2的Modern应用程序打包为安卓APP
  9. 如何用本地连接共享无线网络连接
  10. 微信点餐系统——用Enum枚举来保存商品状态