阅读:6809回复:7
输入法流畅度的量化测试输入法流畅度的量化测试 一、概述 定义: 输入法的流畅度就是输入法接收编码、转换编码并输出汉字单字的极限速度. 长期以来, 输入法的流畅度一直是描述输入法反应灵敏度、汉字上屏速度的一个感官概念, 全凭使用者的感受而作出主观评判, 如极速、流畅、灵敏、快速、反应慢、迟钝、卡顿等, 没有一个精确的量化指标. 一方面, 这是因为目前的输入法的极限速度普遍很高(100-250单字/秒), 完全能够满足人们的想打、听打、看打的速度需求, 没有对其进行量化测量的必要性. 另一方面, 就是输入法的极限速度远远大于人类的击键速度(英文不超过15字符/秒, 汉字不超过5单字/秒), 很难进行精确的客观测量. 有专业人员采用屏幕录像的办法, 也取得了精确的测量结果, 但分析录像结果费时费力: 单字数达到上万个, 时间精确到毫秒级. 录像软件本身也会对系统产生干扰, 影响速度, 且25-30帧/秒的录制速度也不足以精确记录每个字符的上屏时间. 打字测试软件可以精确地测量低速的输入速度, 但对高速的极限测量有较大的误差. 本文采用了一种操作简单、结果较精确的半自动测量方法, 可以完美地测试出每种输入法的极限速度. 采用该方法, 不仅能够测量码表输入法的极限速度, 也能够测量主流拼音输入法的极限速度. 二、测试原理与误差分析 由于输入法的极限速度很高, 只能用程序自动处理汉字的转换输出. 最简单的方法就是采用程序代替手工输入编码, 经输入引擎转换后, 将一定量的汉字单字写入记事本, 计算所用时间, 即可得到: 极限速度 = 汉字单字字符数 / 所用时间 本文采用VBS脚本, 以达到简单方便的目的. 用VBS将编码转换为汉字并写入记事本是很容易的, 但计算所用时间却比较困难, 原因就是系统有延迟: 程序切换、键盘缓冲区、输入法引擎、显示缓冲区等都会产生延迟,而显示延迟是耗时最长的. 为了得到精确的显示结束时间, 采用了手动结束计时的办法: 在显示完毕后, 手动启动停止计时的程序, 得到结束时间, 再经修正手动反应延迟, 即可得到较精确的实际所用时间, 计算而得输入法的极限速度. 从显示结束到手动运行停止计时程序, 会有一个手动反应延迟, 一般在300-800毫秒之间, 该延迟在程序运行过程中不可测量, 只能事先测量其平均值, 在程序运行后进行修正. 但仍然会产生不可避免的误差, 该误差在百毫秒级. 假设实际手动延迟为800毫秒, 修正值为350毫秒, 仍然有450毫秒的绝对误差, 10000汉字单字的持续输入时间为50秒, 则绝对误差率=450/(50*1000)=0.9%. 该误差非常微小. 持续输入汉字时间越长, 绝对误差率越小, 测量结果也就越精确. 三、程序流程 1.手动运行开始程序, 自动打开记事本并激活输入法. 2.程序开始计时: Start = Timer. VBS模拟按键(SendKeys)发送汉字单字编码串, 输入法处理编码串, 转换为汉字单字串, 写入记事本. 每50-200字设置一延时, 延时时间由每100字延时折算而得. 3.VBS模拟按键(SendKeys)发送输入结束标识"*"号三角形, 设置一长延时, 等待手动运行停止计时程序. 4.手动运行停止计时程序, 取得结束计时时间: Finish = Timer. 自动打开新的记事本, 将结束时间写入环境变量. 停止计时程序结束. 5.开始程序等待结束, 读取结束时间, 计算用时(Finish-Start)并修正, 计算极限速度, 将统计结果写入新的记事本窗口. 6.另一种精确计时方法: 查询系统中打开的两个记事本的时间差, 修正手动反应延迟及程序中加入的若干系统延时. 其结果与上述结果非常接近. 7.该测量方法对IME框架很精确, 对汉字数据量不敏感. 但TSF框架有嵌入的延迟随汉字数据量的增加而剧增, 因此只能采用小数据量的办法进行测试. 四、操作: 测试手动反应延迟 目的: 测试从看到输出结束标识(星星三角形)到手动运行停止程序的时间延迟. 方法1: 网页测量. 资料来自网络, 经简化处理. 1.打开网页文件: Test_Delay.html 2.按"开始"键启动, 等待背景变色, 立即点"结束"键, 输出结果. 多测几次, 取平均值. 方法2: 模拟脚本测量. 与测量输入法极限速度的方法一致. 1.关闭或最小化所有窗口, 运行脚本"00-Start.VBS". 2.程序打开计时器和记事本窗口, 并在记事本窗口写入若干行"*"号, 最后写入结束标识"*"号三角形. 3.输出完毕后, 立即运行脚本"02-Stop.VBS", 计时器停止, 示数即为手动反应延迟时间. 4.重复1、2、3, 取平均值. 若窗口被遮挡需适当调整其位置和大小. 五、操作: 测试输入法的极限速度 1.运行VBS脚本"10-Start.VBS", 输入手动反应延迟, 输入每100字延时. 2.程序打开记事本, 激活输入法, 并在记事本窗口写入若干汉字单字(持续50-100秒), 最后写入结束标识"*"号三角形. 3.输出完毕后, 立即运行脚本"20-Stop.VBS", 程序打开新的记事本, 并将统计结果写入新的记事本窗口. 4.检查输出的汉字是否包含乱码. 如果有乱码, 加大每100字延时, 重复1、2、3, 直到输出结果完全正确, 最后得到的数值就是该输入法的极限速度. 若窗口被遮挡需适当调整其位置和大小. 5.若对比测试不同的输入法, 需要将其设置为相同的输出方式: 自动调频, 候选个数, 排列方式, 编码提示方式, 光标跟随方式, 等等. 6.调整每100字延时的目的是为了解决输入缓冲、输入法引擎及显示缓冲之间的矛盾, 保证输出结果的正确性, 如果输出有乱码, 必须加大延时, 降低速度, 否则错误的统计结果毫无意义. 如果输出有明显卡顿, 必须减小延时, 加快速度, 否则输入法无法达到其极限速度. 7.对码表输入法而言, 输出结果是一致的, 对拼音输入法而言, 输出结果可能不一致, 但汉字单字个数是相同的. 六、测试目的 1.测试多多自然码在不同皮肤、不同显示方式下的输入速度. 2.测试小小自然码、Rime自然码(小狼毫)在不同皮肤、不同显示方式下的输入速度. 3.测试微软传统输入法(自然码)的输入速度. 由于码表是统一的, 所以上述的测试脚本是完全一样的, 输出内容也是完全一样的. 这是码表输入法的优点. 七、测试环境、输入法与测试脚本 1.Windows 7 sp1 x64 + FBWF, 8.00 GB 内存, T9600 @ 2.80Ghz, 128GB SSD. 2.自然码6码标准码表. 3.多多输入法生成器V3.1 beta5, Ver.3.1.0.103: http://chinput.com/softs/ddimegen/ 多多皮肤:Default.col ; Classic.col: http://chinput.com/forum/viewtopic.php?id=715 多多皮肤:Chunse.col: http://chinput.com/softs/colourfuledit/ 4.小小输入法平台yong-win-20120927.7z: http://yongim.ys168.com/ 5.Rime-小狼毫0.9.15.1: http://code.google.com/p/rimeime/downloads/detail?name=weasel-0.9.15.1-installer.exe 6.上述输入法的自然码版打包下载(zrm_x64.rar): http://vipmail2.mail.sina.com.cn/apps/netdisk/download.php?id=063d51200751f8c0714182038fdf561b 含多多安装版、小小精简版(含码表)、Rime-小狼毫精简版(含码表). 7.测试脚本与测试结果: http://vipmail2.mail.sina.com.cn/apps/netdisk/download.php?id=cd09ffd590985c24344e0334563b9d63 八、结论 1.小小速度最快, 最流畅. 2.微软传统输入法与Rime也非常流畅. 3.多多:皮肤决定速度. 多多的流畅度受皮肤布局(合并、上下分离、左右分离、嵌入)与排列方式(横排、竖排、左起纵向)的影响非常严重, 但无论哪种皮肤, 都非常流畅. 对多多的结论: ●有皮肤比无皮肤速度快. ●合并窗口比分离窗口速度快. ●左右分离略快于上下分离. ●横排样式比竖排样式速度快. ●IME架构比TSF架构速度快. ●窄皮肤比宽皮肤速度快. ●简单皮肤比复杂皮肤速度快. 九、对多多皮肤机制的建议 多多的皮肤机制非常完善, 也非常复杂: 1个皮肤需要考虑4套布局(合并、上下分离、左右分离、嵌入), 每套布局还要考虑3种排列方式(横排、竖排、左起纵向), 制作一个精美的皮肤非常不容易. ●左起纵向可以取消, 视觉上不太习惯, 常规输入法也不采用. ●每个皮肤可以制作全套布局和排列方式, 也可以只支持部分效果. 比如仿微软传统皮肤可只提供左右分离的竖排界面, 其他没有的选项在配置界面中全部掩藏. ●TSF嵌入架构嵌入编码和嵌入首选的速度有待提高, 但似乎与皮肤无关. ●无皮肤的速度有待提高, 或干脆取消, 而提供一种快速简洁的皮肤. 十、测试图表 速度单位=单字/秒 |
|
板凳#
发布于:2012-10-08 13:25
小小挺快的。
当然,码表的大小也是一个方面吧。用小词库的基于码表的输入法,几乎输入法程序都没什么影响。 我现在是多行/3个候选。行云流水。 |
|
4楼#
发布于:2014-08-28 11:45
你这个测试本身就有问题,用的是VBs(解释执行速度慢)和记事本(尤其是XP的换行、滚屏非常慢,W7好多了)拖了后腿。大约在2008年,我在五笔爱好者论坛上发过一个测试,xpSp2测试,用VB写的发字串程序测试,缺点是外挂输入法不支持,用的Autoit测外挂式。当时测试了海峰9.2、酷极、极点5.2,最慢速度都在每分1500字以上,只有海峰有漏字,酷极最快能到近三千字的速度。
现在我用W7、I5处理器,速度更快,一般程序最低都在五千字以上到一万,反应快的程序速度在每分两三万字。今测小小自定义五笔码表大字库,速度一万至二万多。 |
|
7楼#
发布于:2014-08-29 12:51
todo5300 【輸入法測試快有什麼用呢?準確才是王道 】
快到一定速度以上就没实际作用了,比如10年前的电脑打字完全不会影响速度,但20年前的就会影响了。楼主的结论【目前的输入法的极限速度普遍很高(100-250单字/秒),】,如果真是这种反应速度,绝对会影响打字,而很多人聊天时的速度都能上百,速度快的能上二百多,均未见卡,而我以前的测试也表明楼主测的有问题。 |
|