Win下居然没有一个好用的终端工具

本来如果不是进入新公司,我可能不会再用Win来做开发.但是既然来了,我要主动学习新公司的规则.

然而”拥抱变化”是如此地吃力.三天过去了,我居然整不到一个好用的终端来通过ssh2连接到bsd服务器上进行开发.

首先当然是用Putty.这是一个免费的,据称非常非常牛的终端软件.

然而连上去我就晕了,不支持多标签编辑:我需要在n个server中间换来换去,现在同时开n个putty显然很不好,而且,我需要一个类似”站点管理器”类似的东西,它的那个进行多个会话的设置管理的功能太不好用了.另外,putty的复制粘贴功能用着极不爽,一点鼠标就自动把剪贴板的内容粘上去了,非常不爽.

再是SecureCRT.这是终端软件的老大,收费的.公司严令禁止用盗版,我也没试.注定只能私下用一下,如果用的人多的话,可以申请公司购买.不过我以前用过crack版的,仍然不好用:字体什么的设置太不舒服了,另外不知道为什么默认是没有多种颜色显示的.要知道用Vim编辑时没有颜色是多么难受(我向很多只用vi的人保证,当您用上花花绿绿的vim后,再也不想回去黑白两色的vi了).SecureCRT不知道怎么就把这个给我阉割了,让我掏钱买,很难!

师兄给我推荐了一款东洋鬼子的好东东,叫Poderosa,需要dotnet2.0 Framework,开源,免费,多标签编辑,字体也很漂亮,简直就要把它当做linux下的Konsole了,结果最后发现一个很郁闷的问题:中文不支持!也不是完全不能输入中文,但是大部分情况下输入中文会得到一些空格.所以,虽然我用它用了很长时间,还是决定换!

….  继续在SF.net上找了很久,还是找不到一个应手的!

看来只能申请装一个Linux了.konsole,terminal用起来都不错…. 而且

悄悄地挪地儿了

新公司上班2天了。
第一次进入这样牛、这样大规模的技术公司,还真有点不适应。因为之前我不是自己做主管,管着公司唯一一台服务器,就是直接拿到所有机器的root帐号了,现在我只是一个大机器上的一个小螺丝,哈哈,所以一切都得先申请,什么帐号都没有,不过现在所有帐号都全了,还真不少,我专门把所有密码都记下来了。

大公司也有不少让人感觉特爽的地方(其实关键不是大,而是这么一个大公司办事速度如此快,让人感觉挺爽的)。入职第一天,我就拿到了办公用品,工卡,电脑也在当天下午为我装好了,域帐号什么的全设置好了。第二天饭卡和办公位上的贴姓名的牌儿也好了。下午我觉得用windows挺不爽的(关键是,没有一个好的终端工具,putty弱了点儿,secureCRT没正版,也不太好用,老覃给了一个比较好的东东,还是免费的,但是对中文支持不好,还时不时地出小毛病,我就怀念,microsoft大叔能不能把dos做好用点),于是写了封邮件给IT部门,申请看能不能让我装个linux,这样我就不用编辑器也要下载,终端要下载,感觉什么软件都要下载了…只要我想用的就一定需要专门下载,而且在公司里还不能用盗版,这就让我很为难了…),15分钟后我收到了IT部门同事的回复,速度真快,很不错。

    就是比国企快啊。

用ab来做性能测评好像不公平吧?

我的师兄,从某种程度上说也是我php方面的师父,和他的同事做了测评,分别是针对php4,php5的性能对比和function,class的性能对比的。
这里是师兄的对比结果
师兄的同事做的测评
但是我不认为用ab来做出的测试是合理的.理由:用ab来测试时,结果好像总似是在跳舞一样.做为证据,我将我的notebook依文本方式重启,用ab来测lighttpd的表现.
具体环境:
Haier H40S Notebook
RAM:1.5G
CPU:CY 1.6GHz
硬盘:60G,(具体型号什么的不清楚,列个60G表示不是SCSI硬盘)
OS:Fedora Core 7.0(Moonshine)
web server:lighttpd 1.4.15
测试工具:ab
X环境:未运行X server
命令:ab -n 10000 -c 50 http://localhost:8181/
第一份结果:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)

Server Software: lighttpd/1.4.15
Server Hostname: localhost
Server Port: 8181

Document Path: /
Document Length: 345 bytes

Concurrency Level: 50
Time taken for tests: 1.786830 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Non-2xx responses: 10000
Total transferred: 4980000 bytes
HTML transferred: 3450000 bytes
Requests per second: 5596.50 [#/sec] (mean)
Time per request: 8.934 [ms] (mean)
Time per request: 0.179 [ms] (mean, across all concurrent requests)
Transfer rate: 2721.58 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 2.6 4 8
Processing: 1 4 0.7 5 6
Waiting: 0 1 1.7 2 5
Total: 5 8 2.2 8 13
WARNING: The median and mean for the processing time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50% 8
66% 10
75% 10
80% 11
90% 11
95% 12
98% 12
99% 12
100% 13 (longest request)

这里的结果是Requests per second: 5596.50 [#/sec] (mean)(插一句,lighttpd的性能真是好,用apache从来没上过3000)
第二份ab -n 10000 -c 50的结果:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)

Server Software: lighttpd/1.4.15
Server Hostname: localhost
Server Port: 8181

Document Path: /
Document Length: 345 bytes

Concurrency Level: 50
Time taken for tests: 1.313719 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Non-2xx responses: 10011
Total transferred: 4985478 bytes
HTML transferred: 3453795 bytes
Requests per second: 7611.98 [#/sec] (mean)
Time per request: 6.569 [ms] (mean)
Time per request: 0.131 [ms] (mean, across all concurrent requests)
Transfer rate: 3705.51 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.0 1 5
Processing: 1 5 2.0 5 32
Waiting: 0 3 1.8 3 30
Total: 1 6 2.1 6 35

Percentage of the requests served within a certain time (ms)
50% 6
66% 6
75% 6
80% 6
90% 7
95% 8
98% 10
99% 11
100% 35 (longest request)

结果表明RPS是Requests per second: 7611.98 [#/sec] (mean).
第三份结果:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)

Server Software: lighttpd/1.4.15
Server Hostname: localhost
Server Port: 8181

Document Path: /
Document Length: 345 bytes

Concurrency Level: 50
Time taken for tests: 1.300247 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Non-2xx responses: 10009
Total transferred: 4984482 bytes
HTML transferred: 3453105 bytes
Requests per second: 7690.85 [#/sec] (mean)
Time per request: 6.501 [ms] (mean)
Time per request: 0.130 [ms] (mean, across all concurrent requests)
Transfer rate: 3743.14 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.0 1 5
Processing: 1 4 1.4 5 11
Waiting: 0 2 1.1 3 8
Total: 1 6 1.2 6 14

Percentage of the requests served within a certain time (ms)
50% 6
66% 6
75% 6
80% 6
90% 7
95% 9
98% 10
99% 11
100% 14 (longest request)

RPS结果是Requests per second: 7690.85 [#/sec] (mean).
第四份结果是:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)

Server Software: lighttpd/1.4.15
Server Hostname: localhost
Server Port: 8181

Document Path: /
Document Length: 345 bytes

Concurrency Level: 50
Time taken for tests: 1.315784 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Non-2xx responses: 10033
Total transferred: 4996434 bytes
HTML transferred: 3461385 bytes
Requests per second: 7600.03 [#/sec] (mean)
Time per request: 6.579 [ms] (mean)
Time per request: 0.132 [ms] (mean, across all concurrent requests)
Transfer rate: 3708.06 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.2 1 8
Processing: 1 4 1.4 5 11
Waiting: 0 2 1.1 3 8
Total: 1 6 1.4 6 15

Percentage of the requests served within a certain time (ms)
50% 6
66% 6
75% 6
80% 6
90% 7
95% 9
98% 11
99% 12
100% 15 (longest request)

结果是Requests per second: 7600.03 [#/sec] (mean).
第五份结果是:

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)

Server Software: lighttpd/1.4.15
Server Hostname: localhost
Server Port: 8181

Document Path: /
Document Length: 345 bytes

Concurrency Level: 50
Time taken for tests: 1.812989 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Non-2xx responses: 10000
Total transferred: 4980000 bytes
HTML transferred: 3450000 bytes
Requests per second: 5515.75 [#/sec] (mean)
Time per request: 9.065 [ms] (mean)
Time per request: 0.181 [ms] (mean, across all concurrent requests)
Transfer rate: 2682.31 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 2.7 4 9
Processing: 1 4 0.8 5 6
Waiting: 0 1 1.7 2 5
Total: 5 8 2.3 9 13
WARNING: The median and mean for the processing time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50% 9
66% 10
75% 10
80% 11
90% 12
95% 12
98% 12
99% 12
100% 13 (longest request)

RPS结果是Requests per second: 5515.75 [#/sec] (mean);

可以看到,同是ab -n 10000 -c 50 http://localhost:8181/,结果大不一样,不仅分为7600RPS和5500RPS两档,而各档中具体数据也不一样.这个结果可以理解,OS中总是会有各种各样的消息要处理,影响具体数据结果也很正常.
因此,谢华亮(sir?mm?)的测试用ab的结果来进行php4,php5的性能比较是不太对的.至少目前看来,我没有从他的文章中看到他进行了多次ab测评后取结果的平均值.但是他列出来这样一个结果:

版本 函数测试 不实例化类 实例化类 类的继承
PHP 4.4.2 1047.23/rps 1034.98/rps 1006.14/rps 992.95/rps
PHP 5.2.1 1176.06/rps 1197.17/rps 1187.93/rps 1128.54/rps

这大致可以说明,php5.2确实是比php4.4.2要快.但是从1197.17>1176.06得出php5的类跑得比functiong还快,我不这么认为.只是21个request的差别,太小了,ab测试的随便一个风吹草吹就行了(而且说class比function要快,严重地伤害了我的感情,哈哈)…
嗯,先整这么多.有空好好研究一下,如何对web程序进行性能测评.
另外,有空见到这两位兄台,好好争论一番.

老覃的性能测试(2)

我又写了一个文件.再测之:


这是结果:

function:0.071924924850464ms
class:0.23149108886719ms

为了避免程序运行顺序的影响,我们再运行一次,这次先测静态类的,再测function的:


这次测的时间如下:

function:0.072422027587891ms
class:0.26213884353638ms

从这个结果来看,php的function还是相当快的,比class,哪怕是静态方法要快。
看来我越来越喜欢用function的路子是对的。

后来我加上另一个,把整个结果贴出来:

$obj=& new User();

$t1= time1();

for($i=0;$i<100000;$i++) User::signin(); $t2=time1(); for($i=0;$i<100000;$i++) signin(); $t3=time1(); for($i=0;$i<100000;$i++) $obj->signin();
$t4=time1();

for($i=0;$i<100000;$i++) { $obj1=& new User(); $obj1->signin();
}
$t5=time1();
echo ”
function:”.($t3-$t2).”ms
class:”.($t2-$t1).”ms
object:”.($t4-$t3).”ms
new object:”.($t5-$t4).”ms”;

结果是:

function:0.071459054946899ms
class:0.23710894584656ms
object:0.08794093132019ms
new object:0.17567801475525ms

也就是说,直接调用function是最快的,其次是重复调用已存在对象的方法,仅比纯function慢一点点。
接着是先新建class的实例再调用方法,最慢的是直接调用静态方法。
这个结果有一点点出乎我的意料,我没料到静态方法是最慢的一个。

老覃的性能测试

老覃同学做了一个测试,来比较PHP5下利用function,class来编程时的效率差异。
我一向喜欢钻牛角尖:
有两个疑问:
1.ab本身的文档说了,ab自身是需要CPU资源的,有时候要注意你可能不是在测apache的性能,而是在测ab这个软件的性能。老覃同志如何去除ab的影响?
2.php编译时也是花费CPU时间的。我做了另一组测试:

//t1.php

function signin()

{

echo “signin”;

}

signin();

?>

ab -n 10000 -c 50 的结果是:
1534.15 [#/sec]
Time per request: 32.591 [ms] (mean)

,再另外一个:

function signin()

{

echo “signin”;

}

//signin();

?>

ab -n 10000 -c 50的结果是:
1748.48 [#/sec], Time per request: 28.596 。
就是说,算上ab的花费,apache的花费,php编译的花费,这几个的时间消费可能已经比php代码运行的时间花费要大了。加上运行的代码后,只相关几个ms。
如果要进行精确的比较,老覃的做法可能很不可靠。
PHP4与PHP5.20的效率目前还只有看官方的数据。
另外有个疑问,我的php比老覃同志的似乎快了不少,相差好几倍。可能是我的是Fedora 下运行的结果。

附注:

我后来做了一个实验,ab -n 10000 -c 50 http://localhost/test/23442.php ,返回的结果是:


Requests per second: 2192.03 [#/sec] (mean)
Time per request: 22.810 [ms] (mean)

这是在请求的文件不存在下,apache简单返回一个静态面的情况下的。由此看来,ab和apache的开销就已经占了大约20ms.

再注,在这里
是老覃的同事做的测试.我google得到了这个结果.