按 ‘ 速度 ’ 标签归档

关于快慢感觉的伪科学探索

有时,程序写得太高效,刚刚按下回车键或点确认,就瞬间看到了运行结果。造成一种错觉,仿佛程序做出反应是在按键之前似的。

和同事讨论了这个错觉的来源,并试图从科学角度做出合理解释,结论是,这是可能的。解释如下:

“按键”的信号从大脑发出后,经过颈椎流向手臂手指,产生一个肌肉收缩的动作,手指按键操作完成,这时,有两个事件同时被启动:一、是手指按键的触觉信号经由手指手臂颈椎传回大脑,让大脑相信键被按下去了。二、是电信号从鼠标传进计算机,启动运算显示结果,屏幕上的信息传入人眼,以视觉信号进入大脑。

比较两个事件的路径,不难发现第二个事件的传输途径更加高效,全程光电,只有从眼睛到大脑这最后一小段距离是神经传输。一下没明白?试着假想一下,你的胳膊有一百米长,就会明显地感觉到这个时间差,眼睛看到运算结果一两秒之后,手指上才传来“键已按下”的确认信息。

大家击掌相庆:耶耶!被伪科学成功解释了!

专业服务器比笔记本还慢?

新到刀片服务器一台,郑重地装到了机房里,总算在公司有点产业了。

周六就放大长假,所以周四忙到半夜,周五早晨接着来,先把组里的文档管理系统从一个破破的笔记本转移到刀片上去。转移完毕,一刷浏览器,每个页面都要延迟两秒才能打开,而过去在笔记本上,文档系统的反应都是迅如疾风啊!专业大刀片和专业机房,怎么比放在邋里邋遢的办公桌上的笔记本还慢啊!!! 😕

文档管理系统是MediaWiki家的,在Apache平台上,使用PHP存取MySQL数据库。

是Apache慢么?由这个Apache管理的其它独立网页都是打开得飞快。
是PHP慢么?把那个独立网页从HTML改成PHP程序输出,还是刷屏快到连闪烁都看不出。
是MySQL慢么?从一个MySQL客户端单独访问,依然是迅雷不及掩耳盗铃。
合在一起之后的MediaWiki,却又是龟速了。

用这台机器的浏览器访问自己,也是同样的现象,这说明网络和防火墙设置不是原因。再说,如果真是网络问题,那么独立网页和MediaWiki就只是“慢”和“更慢”的区别。

后来不知怎的,就留意到MediaWiki本地配置文件LocalSettings.php里的

$wgDBServer = "localhost";

心想,如果把localhost改成绝对的IP地址——127.0.0.1——呢?这么改了一下,MediaWiki就立马变身神行太保了。

难道系统认出localhost就是127.0.0.1,还需要等两秒种?检查一下\windows\system32\drivers\etc\hosts,居然

# 127.0.0.1  localhost

真的被注释掉了!注释的前头还加了一行注释:“兹事体大,着DNS同学办理。”难怪,时间都被DNS耗费掉了! 😯

速度问题解决之后,忽然又想起一个推论:如果MySQL和Apache分装在这台刀片的两个VM上,那么,MySQL服务器的IP地址就会生写在Apache那边(俺们的系统还没复杂到要用DNS来处理),然后,当Apache来访问MySQL时,就会出现“两台机器互动”比“一台机器自己动”还快的诡异现象。 😉