存储文本:数组与常量以获得最佳性能


Store text: array vs constant to best performance

我正在编写一个多语言网站的代码。每个页面的文本都是从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;

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

谢谢。

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

当你完成这项工作后,可以使用像gettext这样的本地扩展来正确地完成这项任务,gettext正是为了这个目的而制作的,它可以对二进制翻译文件进行内部缓存,并配有支持翻译工作流程的整个工具生态系统。

性能差异太小或太分钟

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

基准测试结果

<?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

CodeViper的基准测试演示