腾讯圣经编程题附演示

作者:Lightning@小宝 发布时间:June 20, 2010 分类:php经验技巧

编程任务:
1、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我 们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这 个不可能的任务吧。
要求如下:
1)/myworks/example/bbe.txt,98版本英文圣经一本
2)输入部分要求如 下:php ./example.php [单词]
3)输出部分如下:[单词] 1,2 2,4 5,6 表示:此单词在1行2列(第二个单词),2行4列...
说明:
1)此文本4MB之巨...
2)单词的含义:由英文字母 (大小写),数字(0-9)组成的串
3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的
4) 上机考试不允许上网,但我装了man文档以及读取CHM以及PDF的阅读器,在电脑的桌面的CHM文件夹中,有相应的PHP参考手册
5)算法复杂 度要求不能大于O(N^2)(就是N的平方)
6)什么?PHP低效且用起来不顺手,好的,你可以用别的语言来实现。但注意:提供给你的机器上只有 python 2.4/perl 5.8/gcc[g++] 4.1

-----------------美妙的分割线-----------------------------------

网络上也有人给出了解答,所以我就暂不贴代码了。附演示:http://www.xinqdian.com/demo/php/mybbe.php?b=between
有需要bbe.txt跟演示代码可联系我

PHP函数实现原理与性能分析总结

作者:Lightning@小宝 发布时间:May 11, 2010 分类:php经验技巧

1. Php的函数调用开销相对较大。
2. 函数相关信息保存在一个大的hash_table中,每次调用时通过函数名在hash表中查找,因此函数名长度对性能也有一定影响。
3. 函数返回引用没有实际意义
4. 内置php函数性能比用户函数高很多,尤其对于字符串类操作。
5. 类方法、普通函数、静态方法效率几乎相同,没有太大差异
6. 除去空函数调用的影响,内置函数和同样功能的C函数性能基本差不多。
7. 所有的参数传递都是采用引用计数的浅拷贝,代价很小。
8. 函数个数对性能影响几乎可以忽略

建议:
1. 一个功能可以用内置函数完成,尽量使用它而不是自己编写php函数。
2. 如果某个功能对性能要求很高,可以考虑用扩展来实现。
3. Php函数调用开销较大,因此不要过分封装。有些功能,如果需要调用的次数很多本身又只用1、2行代码就行实现的,建议就不要封装调用了。
4. 不要过分迷恋各种设计模式,如上一条描述,过分的封装会带来性能的下降。需要考虑两者的权衡。Php有自己的特点,切不可东施效颦,过分效仿java的模式。
5. 函数不宜嵌套过深,递归使用要谨慎(php的递归性能低下)。
6. 伪函数性能很高,同等功能实现下优先考虑。比如用isset代替array_key_exists
7. 函数返回引用没有太大意义,也起不到实际作用,建议不予考虑。
8. 类成员方法效率不比普通函数低,因此不用担心性能损耗。建议多考虑静态方法,可读性及安全性都更好。
9. 如不是特殊需要,参数传递都建议使用传值而不是传引用。当然,如果参数是很大的数组且需要修改时可以考虑引用传递。

原作者为百度开发者

php性能与技巧总结一

作者:Lightning@小宝 发布时间:December 11, 2009 分类:php经验技巧

<?php
error_reporting(E_ALL);
$_beforeMemory = memory_get_usage();
function testFunc($aa){
    return $aa;
}

$_startTime = microtime(1);
for ($i=0; $i<10000; $i++) 
{
    $a = 'aaaaaaaaaaaaaaa';
    testFunc($a);
}

$_breakpointTime_1 = microtime(1);
echo '变量传递所用Time: ', round($_breakpointTime_1 - $_startTime, 7)." s", "\n";
echo '内存使用量: ', ($_breakpointMemory_1 = memory_get_usage()) - $_beforeMemory, 
    " bytes", "\n";
for ($i=0; $i<10000; $i++) {
    testFunc('aaaaaaaaaaaaaaa');
}

echo '变量传递所用Time: ', round(microtime(1) - $_breakpointTime_1, 7)." s", "\n";
echo '内存使用量: ', memory_get_usage() - $_breakpointMemory_1, " bytes", "\n";

/*
这只是个大概值,但已经能得到想要的测试结果。
Results:
    变量传递所用Time: 0.3503728 s
    内存使用量: 832 bytes
    变量传递所用Time: 0.2680891 s
    内存使用量: 136 bytes

*/
?>

php加速器APC的参数配置

作者:Lightning@小宝 发布时间:October 20, 2009 分类:php经验技巧

Runtime Settings
apc.cache_by_default = 1 
apc.canonicalize =1 
apc.coredump_unmap =0 
apc.enable_cli =1 
apc.enabled =1 
apc.file_md5 =0 
apc.file_update_protection =2 
apc.filters  
apc.gc_ttl =3600 
apc.include_once_override = 0 
apc.lazy_classes =0 
apc.lazy_functions =0 
apc.max_file_size =1M 
apc.mmap_file_mask =/tmp/apc.LkHTgz 
apc.num_files_hint =1024 
apc.preload_path  
apc.report_autofilter =0 
apc.rfc1867 =0 
apc.rfc1867_freq = 0 
apc.rfc1867_name =APC_UPLOAD_PROGRESS 
apc.rfc1867_prefix =upload_ 
apc.rfc1867_ttl =3600 
apc.shm_segments =1 
apc.shm_size =32 
apc.stat =1 
apc.stat_ctime =0 
apc.ttl =7200 
apc.use_request_time =1 
apc.user_entries_hint =4096 
apc.user_ttl =7200 
apc.write_lock =1 

Quercus一个让php可以跑在JVM上的好东西

作者:Lightning@小宝 发布时间:October 3, 2009 分类:php经验技巧

Quercus描述:


Quercus是Caucho公司采用纯Java开发的一个PHP5引擎。基于开源授权协议GPL发布。Quercus自带很多个PHP模块和扩展如PDF,PDO,MySQL和JSON。可以利用这个引擎在一些JavaEE应用容器(Resin,GlassFish等)中运行PHP程序,也可以在PHP脚本中调用一些Java服务如JMS。Quercus会预先把PHP文件编译成.java文件,然后再执行。

该项目地址:http://quercus.caucho.com/


让Drupal跑在jvm上能提升4倍左右的性能。

  1. 页码:
  2. 1
  3. 2
  4. 3
  5. 4
  6. ...
  7. 7
我要报警