function CountTimeConsuming(mode) if mode == nil then os.exit(gg.alert('CountTimeConsuming mode == nil')) end if mode then TimeConsuming = os.clock() end if not mode then TimeConsuming = os.clock() - TimeConsuming end end function GenerateContent(Type, Size) CountTimeConsuming(true) if Type == nil or Type == '' then gg.alert('GenerateContent > Type == nil' ,'return false') return false, 'Type == nil' end if Size == nil or Size == '' then gg.alert('GenerateContent > Size == nil' ,'return false') return false, 'Size == nil' end if Type == 'B' then String = Byte_String elseif Type == 'KB' then String = KiloByte_String elseif Type == 'MB' then String = MegaByte_String elseif Type == '10MB' then String = x10MegaByte_String elseif Type == 'GB' then Size = Size * 1024 String = MegaByte_String elseif Type == 'TB' then Size = Size * 1024 * 1024 String = MegaByte_String else gg.alert('GenerateContent > Type Out of range\nYour type function content is['..Type..']', 'return false') return false, 'Type Out of range' end if Type == 'GB' or Type == 'TB' then gg.toast('你选择了 GigaByte TeraByte 字节单位的生成 可能会造成卡顿及长时间等待情况 如有不对请立即停止脚本') end Content = '' for i=1, Size do Content = Content .. String end CountTimeConsuming(false) return Content, TimeConsuming end--GenerateContent function DeviceMemoryTest(Page) local file = {} file.exists = function(FilePath) local file = io.open(FilePath, "r") if file then file:close() return true end return false end file.write = function(FilePath, Content) local file = io.open(FilePath, "w") if file then file:write(Content) file:close() return true end return false end if Page == 'menu_ui' then local UI = { '硬盘写入速度测试', '刷内存测试', '退出DeviceMemoryTest工具' } for i=1, #UI do UI[i] = '[ - ]'..UI[i] end local choice = gg.choice(UI, nil, '写入测试速度测试 - 测试写入速度\n刷内存测试 - 通过自定义刷内存测试你的设备') if choice == 1 then return DeviceMemoryTest('WriteTest') end if choice == 2 then return DeviceMemoryTest('MemoryFull') end if choice == #UI then FuHongTool_Break = true gg.setVisible(true) end end--menu_ui if Page == 'DefinitionStringConfig' then local RandomString = function(List) return List[math.random(1, #List)] end WriteTest_Result = {} CountTimeConsuming(true) local String_List = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'n', 'w', 'x', 'y', 'z'} Byte_String = RandomString(String_List) CountTimeConsuming(false) WriteTest_Result['从定义到生成1*Byte字节耗时'] = TimeConsuming CountTimeConsuming(true) Content = '' for i=1, 1 * 1024 do Content = Content .. Byte_String end KiloByte_String = Content CountTimeConsuming(false) WriteTest_Result['生成1*KiloByte耗时'] = TimeConsuming CountTimeConsuming(true) Content = '' for i=1, 1 * 1024 do Content = Content .. KiloByte_String end MegaByte_String = Content CountTimeConsuming(false) WriteTest_Result['生成1*MegaByte耗时'] = TimeConsuming CountTimeConsuming(true) Content = '' for i=1, 1 * 10 do Content = Content .. MegaByte_String end x10MegaByte_String = Content CountTimeConsuming(false) WriteTest_Result['生成10*MegaByte耗时'] = TimeConsuming CountTimeConsuming(true) Content = '' for i=1, 1 * 5 do Content = Content .. x10MegaByte_String end x50MegaByte_String = Content CountTimeConsuming(false) WriteTest_Result['生成5*10MegaByte耗时'] = TimeConsuming x50MegaByte_String = nil CountTimeConsuming(true) Content = '' for i=1, 1 * 8 do Content = Content .. x10MegaByte_String end x80MegaByte_String = Content CountTimeConsuming(false) WriteTest_Result['生成8*10MegaByte耗时'] = TimeConsuming x80MegaByte_String = nil --[[ Content = '' for i=1, 1 * 1024 do Content = Content .. MegaByte_String end GigaByte_String = Content ]] end--DefinitionStringConfig if Page == 'WriteTest' then gg.toast('开始读取测试...') DeviceMemoryTest('DefinitionStringConfig') local WriteTest_Result_Content = '创建测试结果:\n'..tostring(WriteTest_Result) WriteTest_Result = {} gg.toast('开始写入测试...') TimeConsuming = nil local FilePath = '/storage/emulated/0/FuHong/.WriteTest.txt' Content, TimeConsuming = GenerateContent('B', 1) WriteTest_Result['读取1*Byte耗时'] = TimeConsuming CountTimeConsuming(true) file.write(FilePath, Content) CountTimeConsuming(false) WriteTest_Result['写入1*Byte耗时'] = TimeConsuming Content, TimeConsuming = GenerateContent('KB', 1) WriteTest_Result['读取1*KiloByte耗时'] = TimeConsuming CountTimeConsuming(true) file.write(FilePath, Content) CountTimeConsuming(false) WriteTest_Result['写入1*KiloByte耗时'] = TimeConsuming Content, TimeConsuming = GenerateContent('MB', 1) WriteTest_Result['读取1*MegaByte耗时'] = TimeConsuming CountTimeConsuming(true) file.write(FilePath, Content) CountTimeConsuming(false) WriteTest_Result['写入1*MegaByte耗时'] = TimeConsuming Content, TimeConsuming = GenerateContent('10MB', 1) WriteTest_Result['读取1*10MegaByte耗时'] = TimeConsuming CountTimeConsuming(true) file.write(FilePath, Content) CountTimeConsuming(false) WriteTest_Result['写入1*10MegaByte耗时'] = TimeConsuming Content, TimeConsuming = GenerateContent('10MB', 5) WriteTest_Result['读取5*10MegaByte耗时'] = TimeConsuming CountTimeConsuming(true) file.write(FilePath, Content) CountTimeConsuming(false) WriteTest_Result['写入5*10MegaByte耗时'] = TimeConsuming CountTimeConsuming(true) Content = '' for i=1, 1 * 80 do Content = Content .. MegaByte_String end x80MegaByte_String = Content CountTimeConsuming(false) WriteTest_Result['读取80*1MegaByte耗时'] = TimeConsuming x80MegaByte_String = nil os.remove(FilePath) local WriteTest_Result_Content = WriteTest_Result_Content..'\n写入测试结果:\n'..tostring(WriteTest_Result) local alert = gg.alert(WriteTest_Result_Content, '再次测试', '取消') if alert == 1 then return DeviceMemoryTest('WriteTest') end if alert == 2 then return gg.setVisible(true) end end if Page == 'MemoryFull' then Config = gg.EXT_CACHE_DIR .. '/MemoryFull.cfg' local InputContent = loadfile(Config) if InputContent then InputContent = InputContent() else InputContent = {3, 10, 10, 1} end local UI = { '生成模式\n1-B 2-KB 3-MB 4-GB 5-TB[1;5]', '生成大小\n单位*1 Max:80M[1;80]', '重复生成数量[1;200]', '超过指定大小停止生成\n0则为不设置 单位*1', } local Type = {'number', 'number', 'number', 'number'} local prompt = gg.prompt(UI, InputContent, Type) if not prompt then gg.toast('输入框被取消') return end gg.saveVariable(prompt, Config) Size = prompt[2] ModeOption = prompt[1] if ModeOption == '1' then Mode = 'B' elseif ModeOption == '2' then Mode = 'KB' elseif ModeOption == '3' then Mode = 'MB' elseif ModeOption == '4' then Mode = 'GB' elseif ModeOption == '5' then Mode = 'TB' else Mode = 'content nil Option:'..ModeOption end ForQuantity = 1 ForQuantity = prompt[3] if ForQuantity <= 0 then ForQuantity = 1 end --gg.alert(ForQuantity) FilePath = '/storage/emulated/0/FuHong/.MemoryTest_File' Content, TimeConsuming = GenerateContent(Mode, Size) if Content == false then gg.toast(TimeConsuming) return end gg.toast('生成字符串耗时'..TimeConsuming..'s quantity:'..Size) gg.sleep(200) CountTimeConsuming(true) for i=1, ForQuantity do file.write(FilePath..i..'.cfg', Content) gg.toast('已生成文件'..i..' 大小:'..Size..Mode) end CountTimeConsuming(false) if gg.alert('生成完毕 耗时:'..TimeConsuming..'s\n是否删除文件', '取消', '删除文件') == 2 then SuccessStatistics, FailStatistics = 0, 0 ForQuantity = ForQuantity + 100 for i=1, ForQuantity do Path = FilePath .. i .. '.cfg' if file.exists(Path) then os.remove(Path) SuccessStatistics = SuccessStatistics + 1 else FailStatistics = FailStatistics + 1 end end gg.toast('删除完成 共检测'..ForQuantity..'\n删除成功'..SuccessStatistics..'个\n不存在'..FailStatistics..'个') end gg.setVisible(true) end end--DeviceMemoryTest gg.toast('初始化DefinitionStringConfig') DeviceMemoryTest('DefinitionStringConfig') gg.setVisible(true) while true do if FuHongTool_Break then break end if gg.isVisible(true) then gg.setVisible(false) DeviceMemoryTest('menu_ui') end end