1、GROUP BY以后,获取第一条和最后一条
SELECT qq,SUBSTRING_INDEX(GROUP_CONCAT(groupid),',',1) FROM xxx GROUP BY qq;
SELECT qq,SUBSTRING_INDEX(GROUP_CONCAT(groupid),',',-1) FROM xxx GROUP BY qq;
关键就是SUBSTRING_INDEX和GROUP_CONCAT。配合CONCAT就可以做到第一、最后一条的联合统计。
1、GROUP BY以后,获取第一条和最后一条
SELECT qq,SUBSTRING_INDEX(GROUP_CONCAT(groupid),',',1) FROM xxx GROUP BY qq;
SELECT qq,SUBSTRING_INDEX(GROUP_CONCAT(groupid),',',-1) FROM xxx GROUP BY qq;
关键就是SUBSTRING_INDEX和GROUP_CONCAT。配合CONCAT就可以做到第一、最后一条的联合统计。
SLES 10,编辑/etc/vimrc,找到syntax on,去掉注释即可。
非智能机,比较大,哈哈~
相当不错~~记一下~~
2011-07-11 23:00
语法结构性能测试:
for循环,里面有i++一千万次
PHP 5.2.17 - 0.91秒 ~ 0.94秒
PHP 5.3.6 - 0.71秒 ~ 0.72秒
PHP 5.4.0Alpha1 - 0.51秒 ~ 0.52秒
2011-07-11 20:54
内置函数调用测试2:
for循环,里面有i++和is_string($j)一千万次,其中$j为字符串
PHP 5.2.17 - 2.90秒 ~ 2.98秒
PHP 5.3.6 - 2.89秒 ~ 2.94秒
PHP 5.4.0Alpha1 - 1.91秒 ~ 1.94秒
2011-07-10 13:01
类调用测试:
for循环,里面有i++和test_a::b()一千万次,其中test_a::b()为return 0
PHP 5.2.17 - 4.85秒 ~ 4.96秒
PHP 5.3.6 - 3.87秒 ~ 3.88秒
PHP 5.4.0Alpha1 - 1.44秒 ~ 1.44秒
2011-07-10 12:34
变量调用测试3:
for循环,里面有i++和$j['a']一亿次,其中$j=array(),$j['a'] = 0
PHP 5.2.17 - 14.30秒 ~ 14.61秒
PHP 5.3.6 - 12.15秒 ~ 12.77秒
PHP 5.4.0Alpha1 - 9.22秒 ~ 9.25秒
2011-07-10 12:23
变量调用测试2:
for循环,里面有i++和$j->a一亿次,其中$j=new stdClass,$j->a=0
PHP 5.2.17 - 19.14秒 ~ 19.52秒
PHP 5.3.6 - 15.69秒 ~ 15.85秒
PHP 5.4.0Alpha1 - 11.62秒 ~ 11.87秒
2011-07-10 12:14
变量调用测试1:
for循环,里面有i++和$j一亿次,其中$j=0
PHP 5.2.17 - 8.92秒 ~ 9.08秒
PHP 5.3.6 - 6.90秒 ~ 6.95秒
PHP 5.4.0Alpha1 - 5.02秒 ~ 5.13秒
2011-07-10 12:09
变量定义测试3:
for循环,里面有i++和$j=new stdClass一千万次
PHP 5.2.17 - 6.11秒 ~ 6.28秒
PHP 5.3.6 - 6.57秒 ~ 6.69秒
PHP 5.4.0Alpha1 - 3.00秒 ~ 3.07秒
2011-07-10 12:01
变量定义测试2:
for循环,里面有i++和$j=array(1,2,3,4,5,6,7)一千万次
PHP 5.2.17 - 9.31秒 ~ 9.38秒
PHP 5.3.6 - 9.04秒 ~ 9.11秒
PHP 5.4.0Alpha1 - 7.92秒 ~ 8.04秒
2011-07-10 11:56
变量定义测试1:
for循环,里面有i++和$j=0一亿次
PHP 5.2.17 - 12.43秒 ~ 12.51秒
PHP 5.3.6 - 9.00秒 ~ 9.10秒
PHP 5.4.0Alpha1 - 6.32秒 ~ 6.47秒
2011-07-10 11:45
内置函数调用测试1:
for循环,里面有i++和isset($i)一亿次,其中$i存在
PHP 5.2.17 - 15.00秒 ~ 15.16秒
PHP 5.3.6 - 12.04秒 ~ 12.11秒
PHP 5.4.0Alpha1 - 7.11秒 ~ 7.16秒
2011-07-10 11:34
自定义函数调用测试:
for循环,里面有i++和test_func()一亿次,test_func()里仅有return 0
PHP 5.2.17 - 33.37秒 ~ 33.67秒
PHP 5.3.6 - 20.80秒 ~ 21.30秒
PHP 5.4.0Alpha1 - 14.30秒 ~ 14.58秒
2011-07-10 11:31
i++测试用例:
for循环,里面有i++和j++一亿次。
PHP 5.2.17 - 15.90秒 ~ 16.00秒
PHP 5.3.6 - 13.73秒 ~ 13.80秒
PHP 5.4.0Alpha1 - 10.38秒 ~ 10.47秒
2011-07-10 11:27
1、i++
2、自定义/内置函数调用测试
3、变量定义/调用测试
4、类调用测试
一、时间
二、内存
2011-07-10 11:25
准备测试用例。
2011-07-10 11:23
PHP 5.2.17安装完成。
PHP 5.2.17 (cli) (built: Jul 10 2011 11:36:26)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
2011-07-10 11:17
开始安装PHP 5.2.17,作对比用
./configure --prefix=/usr/local/services/5.2.17 && make && make install
2011-07-10 11:15
PHP 5.3.6安装完成,比较顺利
PHP 5.3.6 (cli) (built: Jul 10 2011 11:29:07)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
2011-07-10 11:09
开始安装PHP 5.3.6,作对比用
./configure --prefix=/usr/local/services/php-5.3.6 && make && make install
2011-07-10 11:08
安装完成
PHP 5.4.0alpha1 (cli) (built: Jul 10 2011 11:18:51)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2011 Zend Technologies
2011-07-10 11:06
环境:
autoconf (GNU Autoconf) 2.59
Linux linux-q9gc 2.6.16.21_2_ve026test016-1-default #1 Wed Jul 5 21:47:38 MSD 2006 i686 i686 i386 GNU/Linux
gcc version 4.1.0 (SUSE Linux)
2011-07-10 11:05
尝试编译安装,./configure --prefix=/usr/local/services/php-5.4.0 && make && make install
途中见到很多warning,可以安装完成。
if [ ! -f /usr/local/php/bin/php ]; then echo 'Not Install PHP'; else echo 'Found PHP'; fi
if [ ! -f /usr/local/php/extensions/sns_L5.so ]; then echo 'Not Install L5 EXT'; else l5_ext_size=`/usr/bin/stat -c %s /usr/local/php/extensions/sns_L5.so.5.2.64`; echo 'File Size: '$l5_ext_size; fi
跟脚本里一样,用;分隔
http://www.365wed.com/hunliDIY/ready_6.shtml
小学同学
中学同学
GKON、涝东、草、何B、阿结、阿旭、GYY、苏展辉、方麟珩、韩萧、LISA、基哥、阿蒋、兔兔、鸡姐、罗卜、倪尤馨、徐思远、鱼腩
大学同学
黄显祺、李鸣、月月、罗雯、何弈萌、方智阳、王虓、周雯倩、谢传柳、郑燕妮、石俊、马文学、牛福正、朱凯
同事
亲属
小姨、家姐
好友
袁翠颜、仇嘉敏、罗敏、郑惠施、郭凯俊、雪
简单提升点:
1、精简输出模式(2%) 20500->21000
2、文件-函数映射模式(33%) 12000->16000
3、配置为不清理全局变量(28%) 16000->20500
真不容易,75%的提升~~
在PHP 5.3下,设置了declare和pcntl_signal后,出现了大量的rt_sigprocmask调用,造成性能骤降。
strace记录:
rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
查了一下,rt_sigprocmask调用是用于设置接收的信号列表,相对应的函数是sigprocmask,于是使用GDB打断点:
(gdb) bt
#0 0xb7ca8340 in sigprocmask () from /lib/libc.so.6
#1 0x08172d58 in pcntl_signal_dispatch () at /data/software/php-5.3.6/ext/pcntl/pcntl.c:1273
#2 0x082aff48 in php_tick_iterator (data=0x86e3870, arg=0xbfffd0e0) at /data/software/php-5.3.6/main/php_ticks.c:69
#3 0x082e85e4 in zend_llist_apply_with_argument (l=0x8672ca4, func=0x82aff30 <php_tick_iterator>, arg=0xbfffd0e0)
at /data/software/php-5.3.6/Zend/zend_llist.c:236
#4 0x082aff21 in php_run_ticks (count=1) at /data/software/php-5.3.6/main/php_ticks.c:76
#5 0x08311c0b in ZEND_TICKS_SPEC_CONST_HANDLER (execute_data=0xbfffcfb4)
at /data/software/php-5.3.6/Zend/zend_vm_execute.h:2365
#6 0x0831407e in execute (op_array=0x876d638) at /data/software/php-5.3.6/Zend/zend_vm_execute.h:107
#7 0x082f0616 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /data/software/php-5.3.6/Zend/zend.c:1194
#8 0x0829fb76 in php_execute_script (primary_file=0xbffff4f0) at /data/software/php-5.3.6/main/main.c:2268
#9 0x08371c47 in main (argc=2, argv=0xbffff654) at /data/software/php-5.3.6/sapi/cli/php_cli.c:1193
(gdb)
用GDB的结果中可以看到,这个调用产生于declare设置了tick=1时,每个操作的OPCODE后回调了pcntl_signal_dispatch。
很快就有了两个解决的想法:
1、是否可以让他不调pcntl_signal_dispatch?不调有没有功能上的问题?
2、能否简化pcntl_signal_dispatch?
通过grep发现,回调的设置点是在pcntl扩展的模块初始化时期,与使用register_tick_function大致相同。尝试过去除这个设置点,发现信号无法被程序所接收并处理,所以第一种方法不成立。
于是看了下pcntl_signal_dispatch函数,这个函数就是用于每个步骤以后去检查是否有需要回调的信号,如果有的话就触发预先设置的函数。所以考虑在此处忽略掉这些关于信号的设置。
注释代码后问题解决。
电子日记本~~~~~Office Diary~~4.6,完全免费,不错的说~~~~