存储文本:数组与常量以达到最佳性能

时间:2014-04-16 08:49:21

标签: php arrays constants

我正在编写一个多语言网站。每个页面的文本都是从MySQL数据库加载的,应该分配给数组或常量以将其插入到Web内容中。

我想知道是否更好,为了节省内存和最佳性能,使用常量或数组来存储文本。即。

foreach ($db_text_object as $t){
  $text["$t->key"] = $t->text;
}

或:

foreach ($db_text_object as $t){
  define($t->key, $t->text);
}

用作:

echo $text['mytext'];

或:

echo mytext;

任何关于每种方法的优点或缺点的任何其他评论都将受到赞赏。

谢谢。

2 个答案:

答案 0 :(得分:2)

我认为这两者都不会对性能产生重大影响,特别是因为瓶颈会每次都从数据库中获取所有数据。如果你真的对它是否有所作为感兴趣:尝试两种方式并测量它。

当你完成这项工作时,使用像gettext这样的原生扩展程序,这是为了这个目的而做的,对二进制翻译文件进行内部缓存,并附带整个生态系统支持翻译工作流程的工具。

答案 1 :(得分:1)

性能差异太琐事太分钟

我个人使用数组,因为你可以用更简单的方式访问它。

基准测试结果......

<?php


$db_text_object=[1,2,3,4,5];
$start = microtime(true);
foreach ($db_text_object as $k=>$v){
    $text[$k] = $v;
}
echo "Constant Performance: " . (microtime(true) - $start) . "\n";

$start = microtime(true);
foreach ($db_text_object as $k=>$v){
    define($k, $v);
}
echo "Array Performance: " . (microtime(true) - $start) . "\n";

<强> OUTPUT:

Constant Performance: 1.9073486328125E-5 
Array Performance: 1.3113021850586E-5

Benchmarking Demo at CodeViper