阅读:5893回复:7

输入法流畅度的量化测试

楼主#
更多 发布于:2012-10-04 17:19

输入法流畅度的量化测试

一、概述
定义: 输入法的流畅度就是输入法接收编码、转换编码并输出汉字单字的极限速度.
长期以来, 输入法的流畅度一直是描述输入法反应灵敏度、汉字上屏速度的一个感官概念, 全凭使用者的感受而作出主观评判, 如极速、流畅、灵敏、快速、反应慢、迟钝、卡顿等, 没有一个精确的量化指标.
一方面, 这是因为目前的输入法的极限速度普遍很高(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-05 10:39
很好很强大。小小的极速也有量化指标了!
游客
游客
游客
板凳#
发布于:2012-10-08 13:25
小小挺快的。
当然,码表的大小也是一个方面吧。用小词库的基于码表的输入法,几乎输入法程序都没什么影响。

我现在是多行/3个候选。行云流水。
httpwww
新手上路
新手上路
地板#
发布于:2012-10-09 19:55
打字的速度趋于10/秒,已经解决字母上屏的问题,真是太完美了。
4楼#
发布于:2014-08-28 11:45
你这个测试本身就有问题,用的是VBs(解释执行速度慢)和记事本(尤其是XP的换行、滚屏非常慢,W7好多了)拖了后腿。大约在2008年,我在五笔爱好者论坛上发过一个测试,xpSp2测试,用VB写的发字串程序测试,缺点是外挂输入法不支持,用的Autoit测外挂式。当时测试了海峰9.2、酷极、极点5.2,最慢速度都在每分1500字以上,只有海峰有漏字,酷极最快能到近三千字的速度。
现在我用W7、I5处理器,速度更快,一般程序最低都在五千字以上到一万,反应快的程序速度在每分两三万字。今测小小自定义五笔码表大字库,速度一万至二万多。
5楼#
发布于:2014-08-28 19:39
与实际脱节的测试没有意义
6楼#
发布于:2014-08-28 20:22
輸入法測試快有什麼用呢?準確才是王道
7楼#
发布于:2014-08-29 12:51
todo5300 【輸入法測試快有什麼用呢?準確才是王道 】
快到一定速度以上就没实际作用了,比如10年前的电脑打字完全不会影响速度,但20年前的就会影响了。楼主的结论【目前的输入法的极限速度普遍很高(100-250单字/秒),】,如果真是这种反应速度,绝对会影响打字,而很多人聊天时的速度都能上百,速度快的能上二百多,均未见卡,而我以前的测试也表明楼主测的有问题。
游客

返回顶部