|
|
1
10
假设您的应用程序根本不更改配置,请将其移动到start块中:
并确保所有模块都在startup.pl中编译。 你可以变得更花哨,让一个单例类提供配置哈希, 但你不需要。 |
|
|
2
4
如果你能上你的驼鹿课 immutable ,这可能会给你另一个减速带。 |
|
|
3
3
模块 import sub 在编译时执行,因此我们可以使用它来减少/消除DRY ysth's answer . 在下面的示例中,我们使用import方法读取具有给定参数的配置文件,然后将该配置推送到调用包中。
警告是任何
|
|
|
4
1
我在安装HTML::Mason框架时也遇到了同样的问题,发现这个方法相当有效: 在httpd.conf中:
在handler.pl文件中,您定义了所有静态项,如配置、数据库句柄等。这在YourModule::Mason的范围内定义了它们,该范围在apache线程启动时编译(新线程显然会有固有的开销)。你的模块:梅森有一个
我承认,HTML::Mason中可能有一些神奇的东西在帮助我,但它对我有效,也许对你有效? |
|
|
5
0
在几乎不做任何更改的情况下加速此类事情的一种常见方法是在调用同一Apache进程之间简单地使用全局变量和缓存状态:
它不是很干净,可能会导致模糊的错误(尽管根据我的经验,“my$var”会导致更多错误),有时会占用大量内存,但通过这种方式可以避免许多(重复的)昂贵的初始化语句。比使用BEGIN{}的优势;唯一的代码是,您也可以根据其他事件重新初始化,而无需重新启动apache或终止进程(例如,通过在上述测试中包含磁盘上文件的时间戳)。 不过要注意陷阱: an easy way to break in |
|
|
6
-2
JackM的想法是正确的。 通过加载所有类并在“ 母亲 “Apache进程,你不必每次生成新的worker时都编译它们,因为它们已经可用并且在内存中。我们中间非常细致的人为他们的应用程序经常使用的每个模块添加一个“use”行。如果你不在母舰上加载包和模块,每个worker不仅会受到加载模块的性能影响,而且不会获得现代操作系统提供的内存共享的好处。 这实际上是mod_perl和CGI之间差异的另一半。前半部分是mod_perl的持久perl引擎与CGI为每次调用重新生成perl。 |
|
|
Manny · 如何比较Perl中的字符串? 3 年前 |
|
|
BioRod · 我不能用Perl打印键和值 3 年前 |
|
|
user17227456 · Perl CLI代码无法追加字符串行 3 年前 |
|
|
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 3 年前 |
|
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 3 年前 |
|
|
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 3 年前 |
|
|
Pranay Nanda · 使用regex解析许可证文件 7 年前 |