我遇到了这段代码......
if(isset($string[255])) {
// too long
}
Run Code Online (Sandbox Code Playgroud)
isset()比6到40快
if(strlen($string) > 255) {
// too long
}
Run Code Online (Sandbox Code Playgroud)
isset()的唯一缺点是代码不清楚 - 我们无法立即知道正在做什么(参见pekka的回答).我们可以在一个函数中包装isset(),即strlt($ string,255),但我们会失去isset()的速度优势.
我们如何在保留代码可读性的同时使用更快的isset()函数?
编辑:测试显示速度http://codepad.org/ztYF0bE3
strlen() over 1000000 iterations 7.5193998813629
isset() over 1000000 iterations 0.29940009117126
Run Code Online (Sandbox Code Playgroud)
EDIT2:这就是为什么isset()更快
$string = 'abcdefg';
var_dump($string[2]);
Output: string(1) “c”
$string = 'abcdefg';
if (isset($string[7])){
echo $string[7].' found!';
}else{
echo 'No character found at position 7!';
}
Run Code Online (Sandbox Code Playgroud)
这比使用strlen()更快,因为"...调用函数比使用语言结构更昂贵." http://www.phpreferencebook.com/tips/use-isset-instead-of-strlen/
EDIT3:我总是被教导对mirco-optimization感兴趣.可能是因为我在计算机上的资源很少的时候被教过.我对这个可能并不重要的观点持开放态度,在答案中有一些好的论据反对它.我已经开始探索这个问题... /sf/ask/488824591/
我刚从svn转到github.我和我的团队运行本地测试,我们在中央开发服务器上提交更改和测试.每当我们将更改推送到repos时,我想自动将更改到我的repos的任何分支到我的开发服务器上的文件夹中.这将使我和我的团队能够使用我们的中央开发服务器测试和预览彼此的代码.
理想情况下,我可以将子域映射到这些不同的分支目录.即如果该分支被称为"重构",我可以使用http://refactor.devserver.com进行检查
我想这可能涉及我的github配置中的一个钩子,它在dev服务器上触发了一个脚本?也许我需要使用像Hudson这样的ci服务器?
编辑:我可以轻松触发一个脚本来拉动主分支 - 我需要做的是将任何更改的分支拉到单独的根文件夹,这样我就可以通过它自己的子域轻松地测试任何分支.(或者以某种类似的方式自动部署和测试任何已更改的分支)
非常感谢.
我正在考虑使用Shopify管理我的商店.我需要使用API将产品添加到网站.
我可以通过此API调用获取产品和库存:
http://api.shopify.com/product.html#index
但是,那么我想'添加到购物篮' - 我无法从API文档中看到如何做到这一点.一旦添加到篮子里 - 我想获得篮子内容所以我可以显示像...
"2 items : £130 - checkout"
Run Code Online (Sandbox Code Playgroud)
我不需要详细的答案 - 只需指出正确的方向 - 谢谢.
如何在.htaccess强制.mp4和.pdf下载的文件中创建Apache指令?目前它们出现在浏览器窗口中.相反,我想要一个下载文件对话框出现.
我有各种各样的字符串
123_dog
2_fish
56_cat
45_cat_fish
总有一个号码.数字后总是'_'.
我需要删除数字和下划线.我可以使用正则表达式,但我想知道是否有一些pythonic方式使用内置方法?
(我是一位经验丰富的编码员 - 但对Python来说是新手.)
我收到错误:
UnboundLocalError: local variable 'process' referenced before assignment
在下面的代码中 - 如何在 except 块中获取进程对象?
try:
process = subprocess.Popen(list(args),
shell=False, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
except Exception, e:
print process.communicate()
Run Code Online (Sandbox Code Playgroud)