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

在PHP中,什么更快?getimagesize()还是数据库查询?,php,optimization,getimagesize,Php,Optimization,Getimagesize,我必须写一个函数,我想知道哪个会更快 使用getimagesize()还是将图像大小存储在DB表中并从中获取 我承认在编写应用程序时还有其他因素需要考虑。但我确实需要知道 这一点,谢谢。很可能,存储在数据库中会更快 getimagesize()可能非常慢,具体取决于图像的大小。您可能需要使用它一次来获取大小,然后将其存储在数据库中。在这之后,查询数据库以获得更大的大小,在数据库中存储会更快 getimagesize()可能非常慢,具体取决于图像的大小。您可能需要使用它一次来获取大小,然后将其存储

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

使用
getimagesize()
还是将图像大小存储在DB表中并从中获取

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

很可能,存储在数据库中会更快


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

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

我相信数据库查询会更快,尤其是当图像可能相当大时。

都取决于大小

我相信数据库查询会更快,尤其是当图像可能相当大时。

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

话虽如此,我还是暂时倾向于数据库调用,因为它总体上“更快”。(为了支持我的论点,我将在低延迟连接上投影一个无阻塞的数据库,该连接具有适当的连接池和适当的模式/索引。)

  • 数据库可能会有更热的缓冲区和略少的IO。维度信息在更少的位上压缩,数据库可能能够避免额外的系统调用(
    getimagesize
    每次都必须打开文件)

  • 将维度存储在数据库中可避免重复的图像标题处理。尽管我声称“相对较快”,但操作确实需要时间,这可能会导致多次呼叫

  • 如果从数据库中访问任何其他图像元数据,那么维度信息可以作为“零成本”的附加内容包含在内

  • 或者,缓存提供程序(例如memcached)可以通过简单的关联/获取完全破坏传统的RDBMS数据库性能,并且可以根据需要使用
    getimagesize
    作为支持

    正如zerkms所说,在实际使用环境中测量不同的方法是知道哪种方法更快的唯一方法。有一些因素可能导致“绩效”偏向于一种方法而非另一种方法。当然,这甚至可能无关紧要::)

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

    话虽如此,我还是暂时倾向于数据库调用,因为它总体上“更快”。(为了支持我的论点,我将在低延迟连接上投影一个无阻塞的数据库,该连接具有适当的连接池和适当的模式/索引。)

  • 数据库可能会有更热的缓冲区和略少的IO。维度信息在更少的位上压缩,数据库可能能够避免额外的系统调用(
    getimagesize
    每次都必须打开文件)

  • 将维度存储在数据库中可避免重复的图像标题处理。尽管我声称“相对较快”,但操作确实需要时间,这可能会导致多次呼叫

  • 如果从数据库中访问任何其他图像元数据,那么维度信息可以作为“零成本”的附加内容包含在内

  • 或者,缓存提供程序(例如memcached)可以通过简单的关联/获取完全破坏传统的RDBMS数据库性能,并且可以根据需要使用
    getimagesize
    作为支持


    正如zerkms所说,在实际使用环境中测量不同的方法是知道哪种方法更快的唯一方法。有一些因素可能导致“绩效”偏向于一种方法而非另一种方法。当然,这可能并不重要::)

    测量一下怎么样?这完全取决于图像的大小@zerkms@Neal:那么?我不明白你的意思。其他注意事项:当你需要图像大小时,你是否已经去数据库了?(带回一个额外的列将比整个额外的往返行程少很多开销。)此外,如果你想将存储移动到S3(或其他任何地方)而不是你的应用程序服务器,如果你的应用程序不指望能够在本地文件系统中找到东西,那就更容易了。测量一下怎么样?这一切都取决于图像大小@zerkms@Neal:那么?我不明白你的意思。其他注意事项:当你需要图像大小时,你是否已经去数据库了?(带回一个额外的列将比整个额外的往返开销要小得多。)此外,如果您想将存储移动到S3(或其他什么)而不是您的应用程序服务器,那么如果您的应用程序不指望能够在本地文件系统中查找内容,这将更容易。