在PHP中什么会更快?,getimagesize()或数据库查询?

时间:2013-09-30 22:16:03

标签: php optimization getimagesize

我必须写一个函数,我想知道哪个更快。

使用getimagesize()或将图像大小存储在数据库表中并从那里获取?

我承认在编写应用时还有其他因素需要考虑。但我确实需要知道 谢谢。

3 个答案:

答案 0 :(得分:3)

怀疑 getimagesize实际上取决于图片的大小..宽度/高度通常存储为元数据,这意味着只需要图像标题待处理。因此,它应该是一个“相对快速”的操作,并且应该[大部分]持续挂钟时间。

话虽如此,我暂时倾向于将数据库调用视为整体“更快”。 (为了支持我的观点,我正在使用适当的连接池和合适的模式/索引在低延迟连接上预测一个非陷入困境的数据库。)

  1. 数据库可能会有更热的缓冲区和更少的IO。维度信息通过较少的位进行压缩,数据库可以避免额外的系统调用(getimagesize每次都必须打开文件)。

  2. 在数据库中存储维度可避免重复的图像标题处理。即使我声称“相对较快”,但操作确实需要时间,这可能会增加许多电话。

  3. 如果从数据库访问任何其他图像元数据,那么尺寸信息可以简单地包含在“零成本”中。

  4. 或者,缓存提供程序(例如memcached)可以完全吹掉传统的RDBMS数据库性能以进行简单的关联/提取,并且可以根据需要使用getimagesize进行支持。

    正如zerkms所说,在实际使用环境中测量不同的方法是了解哪一种更快的唯一方法。有些因素可能会使“性能”倾向于接近另一个。当然,它甚至可能不重要:focus on making the slow 3% faster:)

答案 1 :(得分:2)

更有可能的是,存储在数据库中会更快。

getimagesize()可能会非常慢,具体取决于图像的大小。您可能需要使用它一次来获取大小然后存储在数据库中。之后,查询db以获取大小

答案 2 :(得分:1)

一切都取决于尺寸。

我相信数据库查询会更快,特别是当图像可能非常大时。