


PHP performance test on whether to pass multiple parameters or context objects_PHP tutorial
In the process of developing the WeChat public platform, there are several parameters that always need to be passed around, $userOpenId, $message, $time.
During the entire running process of the program, these three variables are always placed in the parameter list for the convenience of function processing. Regarding this point, I suddenly thought that in Android, there is always a Context object passed around. Now my understanding is that some necessary data is stored in the Context, which is used in the logic of the entire program execution. may be used.
Therefore, I thought about it, should my three variables be packaged into Context? Will there be any improvement in performance?
If PHP’s function parameters are variables, they are passed directly to the copy of the variable. If they are passed to objects, they are passed to the pointers of the objects. In other words, if a String is defined and modified in a function, if it is not returned in the form of a return value, the variable has not been modified, but a copy of the variable has been modified. If you define an object and put it into a function for operation, the object itself will be modified directly.
Based on the above thinking, I think it might be faster if the object is passed (because there is no need to copy). So, I wrote the following code to test.
<?<span php </span><span //</span><span 程序开始</span> <span $time1</span> = <span microtime</span><span (); </span><span //</span><span 上下文环境的三个变量</span> <span $userOpenId</span> = "abcdefghijk"<span ; </span><span $message</span> = "我想要查询什么"<span ; </span><span $time</span> = <span time</span><span (); </span><span //</span><span 构建上下文对象</span> <span $context</span> = <span new</span> Context(<span $userOpenId</span>, <span $message</span>, <span $time</span><span ); </span><span //</span><span 循环次数</span> <span $timeOfLoop</span> = 5000<span ; </span><span for</span> (<span $i</span> = 1; <span $i</span> <= <span $timeOfLoop</span>; <span $i</span>++<span ) { </span><span //</span><span handleMessageByParams($userOpenId, $message, $time);</span> handleMessageByObject(<span $context</span><span ); } </span><span //</span><span 程序结束</span> <span $time2</span> = <span microtime</span><span (); </span><span //</span><span 耗时</span> <span echo</span> "cast:".(<span $time2</span> - <span $time1</span><span ); </span><span //</span><span 通过传参数的处理方法</span> <span function</span> handleMessageByParams(<span $userOpenId</span>, <span $message</span>, <span $time</span><span ) { </span><span echo</span> "working......[".<span $userOpenId</span>.<span $message</span>.<span $time</span>."]\n"<span ; </span><span //</span><span 100 0.00020699999999996 //1000 0.002683 //5000 0.011099</span> <span } </span><span //</span><span 通过传对象的处理方法</span> <span function</span> handleMessageByObject(<span $context</span><span ) { </span><span echo</span> "working......[".<span $context</span>->userOpenId.<span $context</span>->message.<span $context</span>-><span time</span>."]\n"<span ; </span><span //</span><span 100 0.00024099999999999 //1000 0.002897 //5000 0.014896</span> <span } </span><span //</span><span 上下文对象</span> <span class</span><span Context { </span><span public</span> <span $userOpenId</span> = <span null</span><span ; </span><span public</span> <span $message</span> = <span null</span><span ; </span><span public</span> <span $time</span> = <span null</span><span ; </span><span public</span> <span function</span> __construct(<span $userOpenId</span>, <span $message</span>, <span $time</span><span ) { </span><span $this</span>->userOpenId = <span $userOpenId</span><span ; </span><span $this</span>->message = <span $message</span><span ; </span><span $this</span>-><span time</span> = <span $time</span><span ; } } </span>?>
I have written the test results in the comments, the unit is ms (milliseconds). It can be seen that transferring Context is a bit slower. Of course, considering that the environment of this context cannot be passed back and forth 5,000 times in one code, and the performance difference is very small in milliseconds, using the context object to pass the necessary parameters is a more elegant choice.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

DeepSeek: A powerful AI image generation tool! DeepSeek itself is not an image generation tool, but its powerful core technology provides underlying support for many AI painting tools. Want to know how to use DeepSeek to generate images indirectly? Please continue reading! Generate images with DeepSeek-based AI tools: The following steps will guide you to use these tools: Launch the AI Painting Tool: Search and open a DeepSeek-based AI Painting Tool (for example, search "Simple AI"). Select the drawing mode: select "AI Drawing" or similar function, and select the image type according to your needs, such as "Anime Avatar", "Landscape"

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Gate.io, a leading cryptocurrency trading platform founded in 2013, provides Chinese users with a complete official Chinese website. The website provides a wide range of services, including spot trading, futures trading and lending, and provides special features such as Chinese interface, rich resources and community support.

Gateio Exchange app download channels for old versions, covering official, third-party application markets, forum communities and other channels. It also provides download precautions to help you easily obtain old versions and solve the problems of discomfort in using new versions or device compatibility.

Gate.io (Sesame Open Door) is the world's leading cryptocurrency trading platform. This article provides a complete tutorial on spot trading of Gate.io. The tutorial covers steps such as account registration and login, KYC certification, fiat currency and digital currency recharge, trading pair selection, limit/market transaction orders, and orders and transaction records viewing, helping you quickly get started on the Gate.io platform for cryptocurrency trading. Whether a beginner or a veteran, you can benefit from this tutorial and easily master the Gate.io trading skills.
