CN112631891A - Performance analysis method and device, electronic equipment and storage medium - Google Patents

Performance analysis method and device, electronic equipment and storage medium Download PDF

Info

Publication number
CN112631891A
CN112631891A CN202110009524.7A CN202110009524A CN112631891A CN 112631891 A CN112631891 A CN 112631891A CN 202110009524 A CN202110009524 A CN 202110009524A CN 112631891 A CN112631891 A CN 112631891A
Authority
CN
China
Prior art keywords
thread
user command
command
target process
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110009524.7A
Other languages
Chinese (zh)
Inventor
李金洲
虞海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202110009524.7A priority Critical patent/CN112631891A/en
Publication of CN112631891A publication Critical patent/CN112631891A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

The embodiment of the application provides a performance analysis method and device, electronic equipment and a storage medium, wherein the method comprises the following steps: acquiring configuration data, generating an injection code according to the configuration data, injecting the injection code into a target process to be analyzed, receiving a user command, and calling the injection code to execute performance analysis according to the user command; according to the method and the device, the injection code can be automatically generated according to the configuration data and injected into the target process, and the high-efficiency usability of performance analysis is realized; the performance analysis of the target process is realized through a code injection measure, the source code of the target process does not need to be modified, and the safety and the accuracy of the performance analysis are improved; and the performance analysis process can be controlled according to the user command, so that the controllability of the performance analysis process is realized.

Description

Performance analysis method and device, electronic equipment and storage medium
Technical Field
The present application relates to the field of data processing technologies, and in particular, to a performance profiling method and apparatus, an electronic device, and a storage medium.
Background
For a running program, it is very important to monitor its performance, because the performance of the program directly affects the user experience of the product. The conventional performance profiling generally refers to that a development tester preliminarily positions a code segment to be profiled by experience, records the system time of the code segment to be profiled during the previous and subsequent execution, and then uses the system time difference of the previous and subsequent execution as the running time of the code segment; alternatively, the target code segment is run in the performance profiling tool using built-in performance profiling tools, such as timeit, profile, cProfile, to perform performance profiling.
The above conventional performance profiling method has the following problems: firstly, development and test personnel are required to modify source codes manually; secondly, potential performance hotspots are correspondingly increased along with the increase of the code quantity when a large program is analyzed, a large amount of code changes can be generated, the specific implementation is extremely complicated, the efficiency is low, and errors are easily introduced; thirdly, the built-in performance analysis tool has simple functions, lacks a matched data collection and analysis tool, needs developers to manually collect and arrange performance data, and has low efficiency; and the target code segment is required to run in the performance analysis tool, and logic information is lacked, so that inaccurate performance analysis data is easily caused.
Disclosure of Invention
In view of the above, embodiments of the present application are proposed to provide a performance profiling method and apparatus, an electronic device, and a storage medium, which overcome or at least partially solve the above problems.
In order to solve the above problem, an embodiment of the present application discloses a performance profiling method, where the method includes:
acquiring configuration data and generating a corresponding injection code according to the configuration data;
injecting the injection code into a target process to be parsed;
receiving a user command;
and calling the injection code to execute performance profiling according to the user command.
Optionally, the step of receiving a user command includes:
judging whether the user command is an instruction to quit the analysis command;
if the user command is an instruction to quit the analysis command, clearing the injection code;
if the user command does not indicate to exit the parsing command, determining the type of the user command;
and storing the user command meeting the preset condition type into a message queue.
Optionally, the step of invoking the injection code to perform performance profiling according to the user command includes:
when more than two user commands exist in the message queue, determining the priority of the user commands in the message queue;
and calling the injection code to execute performance profiling according to the user command with the highest priority.
Optionally, the step of injecting the injection code into the target process to be parsed includes:
determining the connection information of the target process according to the configuration data;
sending a connection request to the target process according to the connection information;
and after receiving the information of successful connection with the target process, injecting the injection code into the target process.
Optionally, if the user command indicates to quit the parsing command, the step of clearing the injection code further includes:
and disconnecting the connection with the target process.
Optionally, the method further includes:
storing the execution result of the performance analysis into a result queue;
and extracting and displaying the execution result from the result queue.
The embodiment of the application also discloses a performance analysis method, which is applied to a performance analysis client, wherein the performance analysis client comprises a first thread and a second thread, and the method comprises the following steps:
the first thread acquires configuration data and sends the configuration data to the second thread, and the second thread generates a corresponding injection code according to the configuration data;
the second thread injects the injection code into a target process to be analyzed;
the first thread receives a user command and sends the user command to the second thread;
the second thread invokes the injection code to perform performance profiling in accordance with the user command.
Optionally, the step of receiving, by the first thread, a user command and sending the user command to the second thread includes:
the first thread judges whether the user command is an instruction to quit the analysis command;
if the user command is an instruction to exit a profiling command, the first thread notifies the second thread to clear the injection code;
if the user command does not indicate to exit from a parsing command, the first thread determines a type of the user command;
and the first thread sends the user command meeting the preset condition type to the message queue of the second thread.
Optionally, the step of invoking, by the second thread according to the user command, the injection code to perform performance profiling includes:
when there are more than two user commands in the message queue, the second thread determines a priority of the user commands in the message queue;
and the second thread calls the injection code execution performance profiling according to the user command with the highest priority.
Optionally, the step of the second thread injecting the injection code into the target process to be parsed includes:
the second thread determines the connection information of the target process according to the configuration data;
the second thread sends a connection request to the target process from the connection information;
and after receiving the information that the target process is successfully connected, the second thread injects the injection code into the target process.
Optionally, if the user command indicates to quit the parsing command, the first thread notifies the second thread of the step of clearing the injection code, further comprising:
the first thread notifies the second thread to disconnect from the target process.
Optionally, the method further includes:
the second thread stores the execution result of the performance analysis into a result queue;
and the first thread extracts and displays the execution result from the result queue.
The embodiment of the application also discloses a performance profiling device, the device includes:
the first acquisition module is used for acquiring configuration data and generating a corresponding injection code according to the configuration data;
the code injection module is used for injecting the injection code into a target process to be analyzed;
the command receiving module is used for receiving a user command;
and the execution profiling module is used for calling the injection code to execute performance profiling according to the user command.
Optionally, the command receiving module includes:
the first judgment module is used for judging whether the user command is an instruction for quitting the analysis command;
a code clearing module for clearing the injection code if the user command is a command indicating to quit the parsing;
the type determining module is used for determining the type of the user command if the user command does not indicate to quit the analysis command;
and the command storage module is used for storing the user commands meeting the preset condition types into the message queue.
Optionally, the execution profiling module includes:
the priority determining module is used for determining the priority of the user commands in the message queue when more than two user commands exist in the message queue;
and the command execution module is used for calling the injection code execution performance analysis according to the user command with the highest priority.
Optionally, the code injection module includes:
the connection information determining module is used for determining the connection information of the target process according to the configuration data;
a connection request sending module, configured to send a connection request to the target process according to the connection information;
and the connection injection module is used for injecting the injection code into the target process after receiving the information of successful connection with the target process.
Optionally, the code clearing module further includes:
a disconnection submodule for disconnecting the connection with the target process
Optionally, the apparatus further comprises:
the result storage module is used for storing the execution result of the performance analysis into a result queue;
and the result display module is used for extracting and displaying the execution result from the result queue.
An embodiment of the present application further discloses an electronic device, which includes a processor, a memory, and a computer program stored on the memory and capable of running on the processor, and when the computer program is executed by the processor, the steps of the performance profiling method described above are implemented.
An embodiment of the present application further discloses a computer-readable storage medium, on which a computer program is stored, and when the computer program is executed by a processor, the steps of the performance profiling method described above are implemented.
The application includes the following advantages:
in the embodiment of the application, the configuration data is obtained, the injection code is generated according to the configuration data, the injection code is injected into a target process to be analyzed, a user command is received, and the injection code is called according to the user command to execute performance analysis; according to the method and the device, the injection code can be automatically generated according to the configuration data and injected into the target process, and the high-efficiency usability of performance analysis is realized; the performance analysis of the target process is realized through a code injection measure, the source code of the target process does not need to be modified, and the safety and the accuracy of the performance analysis are improved; and the performance analysis process can be controlled according to the user command, so that the controllability of the performance analysis process is realized.
Drawings
FIG. 1 is a flowchart illustrating steps of a performance profiling method according to an embodiment of the present application;
FIG. 2 is a flowchart illustrating thread interaction steps of a performance profiling method according to an embodiment of the present application;
FIG. 3 is a flowchart of the execution steps of the first thread side according to an embodiment of the present application;
FIG. 4 is a flowchart of the execution steps of the second thread side according to the embodiment of the present application;
FIG. 5 is a flowchart of the execution steps of the target device side according to the embodiment of the present application;
FIG. 6 is a block diagram of a performance analysis apparatus according to an embodiment of the present application.
Detailed Description
In order to make the aforementioned objects, features and advantages of the present application more comprehensible, the present application is described in further detail with reference to the accompanying drawings and the detailed description. It is to be understood that the embodiments described are only a few embodiments of the present application and not all embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present application.
The Python is a commonly used computer programming language, has the advantages of simplicity, easiness in use, rapidness in development, rich standard libraries and the like, and is widely applied to various fields. In the current field of game development, Python is widely used in the development of business logic in the form of a scripting language. However, Python performs poorly with respect to many other languages (e.g., C/C + +). However, in the process of game development, performance is an important item, and especially as the game content is continuously developed, program logic becomes more complicated, and the performance problem of Python is further amplified to influence the game experience. Therefore, the Python program is optimized, and the method has great significance for game development.
Referring to fig. 1, fig. 1 is a flowchart illustrating steps of a performance profiling method according to an embodiment of the present application, where the method is used for performing performance profiling on an application program, and is based on characteristics of a Python dynamic interpretive language, and a defect that the Python language cannot be independently taken out of running on an integrated development tool, and the method is particularly suitable for performing performance profiling on a program in a Python scripting language. In this embodiment, the method may be applied to a performance profiling client, and the method may be executed by a device that installs and runs the performance profiling client, where the device may be a target device to be profiled, and the target device may be a terminal device or a server, so as to perform performance profiling on an application program in the target device; the device may also be a third-party device, and the performance of the application program in the target device to be profiled is profiled by the third-party device.
In this embodiment, the method may specifically include the following steps:
step 101, obtaining configuration data and generating an injection code according to the configuration data.
Because the traditional performance analysis method needs to extract the program code to be analyzed, or modify the program code to be analyzed and analyze the performance, the process is complicated, the efficiency is low, and the reusability is not available.
In this embodiment, the corresponding configuration data may be set according to different target processes to be parsed and according to different program objects in the target processes to be parsed, and by acquiring the configuration data, the injection code may be automatically generated, thereby improving the efficiency and reusability of performance parsing.
Step 102, injecting the injection code into a target process to be profiled.
In this embodiment, a target process to be parsed may be determined in advance, and the injection code may be injected into the target process by being connected to the target process, and executed by the target process.
Step 103, receiving a user command.
Because the traditional performance analysis method needs to set performance analysis running time in advance in the process of analyzing the performance of the target program object, the performance analysis process cannot be suspended or quitted before the running time is not reached, and the performance analysis result cannot be mastered at any time.
In this embodiment, after injecting the injection code into the target process, the user may send a user command through the device running the performance profiling client.
Step 104, performing performance profiling according to the user command.
When the device running the performance analysis client receives a user command sent by a user, the performance analysis process of the target program object is controlled according to the type of the user command, so that the user can control the performance analysis process at any time.
In the embodiment of the application, the injection code is automatically generated according to the configuration data and injected into the target process, so that the high-efficiency usability of performance analysis is realized; the performance of the target process is analyzed through the code injection measure, the source code of the object to be analyzed does not need to be modified, and the safety and the accuracy of the performance analysis are improved; and the performance analysis process can be controlled according to the user command, so that the controllability of the performance analysis process is realized.
Hereinafter, the performance profiling method in the present exemplary embodiment will be further described.
In step 101, configuration data is obtained and an injection code is generated according to the configuration data.
Configuration data may be entered by a user in a configuration settings interface, typically including configuration information related to a target object to be profiled; wherein the target object to be parsed may be a module or component or the like in the target process.
Taking a running game application as an example of a target process, when a target object is a certain role in the running game application, the configuration data may include a name of a game role to be analyzed so as to analyze the performance of the role; when the target program object is a certain type of character in the running game application program, the configuration data may include a name of a character class to be analyzed, so as to analyze the performance of the game character of the type.
Injection codes to be injected can be automatically generated based on a preset code template and a code modification protocol according to the acquired configuration data. When the target object to be analyzed changes, the user only needs to modify the corresponding configuration data, and the injection code for the modified target object can be automatically generated, so that the operation is convenient and efficient.
In a specific implementation, after the user inputs the configuration data, the configuration data can be stored, and the stored configuration data can be directly acquired in the next performance analysis. Thus, when the same target object performance is profiled again, the configuration data may not be entered repeatedly.
In step 102, the injection code is injected into a target process to be profiled.
The target process to be profiled may be determined in advance by a user, and by connecting to the target process, the injection code may be injected into the target process, which is run by the target process.
In an optional embodiment of the present application, when the performance profiling client operates in a third-party device, the configuration data may further include connection information with the target process, specifically, the user may input the connection information connected with the target process in the configuration interface, where the connection information may include IP port information of the target device; the step 102 may include the following sub-steps:
determining the connection information of the target process according to the configuration data;
sending a connection request to the target process according to the connection information;
and after receiving the information of successful connection with the target process, injecting the injection code into the target process.
In this embodiment, the connection information of the target process, for example, the IP port information and the connection mode, may be obtained through the configuration data; the connection mode may be a Telnet (remote terminal protocol) or Socket (Socket) network connection mode. According to the IP port information and the connection mode, a connection request can be sent to the target equipment; when a target process of the target device exists, that is, when a target application corresponding to the target process is in a running state, the target device may receive a connection request to establish a connection with the performance profiling client. And after the performance analysis client receives the information of successful connection with the target process, injecting the injection code into the target process, namely sending the injection code to the target process of the target equipment.
Specifically, the injection code comprises a code injection module code segment, and the code injection module code segment is determined by an import code input by a user in a configuration setting interface; it can be understood that the configuration data may further include an import code input by a user, where the import code is a legal code based on the target process and does not adversely affect the logic and security of the target process. When the target process runs the code injection module code segment in the injection code, the target object to be profiled may be determined and the injection code is injected into the corresponding location of the target process.
When the target process of the target device does not exist, that is, the target application program corresponding to the target process does not exist, or is not in a running state, the target device may return information of connection failure to the performance profiling client, and in this case, the injection code cannot be injected into the target process.
In a specific implementation, when a target application of a target device is started, that is, when a target process is generated, a dedicated IP port is simultaneously started to wait for a connection with a performance profiling client running on a third-party device. It should be noted that whether the target device is connected to the performance profiling client executed by the third-party device does not affect the normal operation of the target application. Therefore, whether in a test environment or a formal environment, the running of the performance profiling client does not affect the target application. For example, when the target application is a game application, the performance of the game application is analyzed, and the normal game experience of the player is not affected.
Further, in order to ensure the security of the target process and prevent illegal connection, the connection information with the target process in the configuration data may further include connection verification information, such as a key, a password, and the like. The process of sending the connection request to the target process according to the connection information may include sending a connection request to the target device according to the IP port information, where the connection request includes connection verification information. When a target process of the target device exists and the connection verification information is verified, the target device may establish a connection with the performance profiling client.
In step 103, a user command is received.
In this embodiment, the user may send a user command through the device running the performance profiling client; specifically, the user may send a user command to the performance profiling client by clicking a related control in the device interactive interface, or by inputting related information in an input box in the interactive interface, or the like.
The user commands may comprise a control type of command and a setting type of command, wherein a control type of command may refer to a user command controlling the performance profiling process, e.g. a command instructing to start a profiling process, a command instructing to collect profiling data, a command instructing to suspend a profiling process, etc., and a setting type of command may refer to a user command not affecting the current performance profiling process, e.g. a command to change a target device, a command to save configuration data, etc.
It will be appreciated that control type commands are associated with call injection code, whereas setup type commands are not directly associated with call injection code. Therefore, the received user command needs to be classified, and the step 103 may include the following steps:
determining a type of the user command;
and storing the user command meeting the preset condition type into a message queue.
The preset condition type can be a control type, and the message queue is used for storing user commands of the control type to be executed. After receiving the user command, the type of the user command needs to be determined, and when the user command is a control type command, the user command is stored in a message queue.
Further, in this embodiment, it may be considered that the command indicating to exit from the parsing has the highest priority, and therefore, when receiving the user command, it needs to be determined whether the user command is the command to exit from the parsing first; if yes, clearing the injection code; if not, the type of the user command is further determined.
In step 104, the injection code is invoked to perform performance profiling in accordance with the user command.
And when a user command exists in the message queue, calling the injection code according to the user command to execute performance profiling. In this embodiment, the injection code may further include a control module code segment and a data collection module code segment, wherein the control module code segment is used to determine a code segment for executing the user command.
Specifically, the following cases may be included but not limited to:
invoking the injection code to initiate performance profiling when the user command is a command indicating a start of profiling. It will be appreciated that when an instruction to start a profiling command is received, the code segment of the control module that invokes the injected code executes the code segment associated with the instruction to start a profiling command to monitor the behavior of the target object.
When the user command is a collect profile data command, invoking the injection code to collect and return performance profile data. It will be appreciated that when a command is received instructing the collection of profile data, the control module code segment that invokes the injection code executes the data collection module code segment to collect and return performance profile data for the target object.
Invoking the injection code to suspend performance profiling when the user command is a command indicating suspend profiling. It is to be understood that when a command instructing a pause of a profiling command is received, the code segment of the control module invoking the injection code pauses the execution of the code segment related to the command instructing a start of a profiling command for pausing the monitoring of the behavior of the target object.
Further, in an optional embodiment of the present application, the step 104 may further include the following steps:
when more than two user commands exist in the message queue, determining the priority of the user commands in the message queue;
and calling the injection code to execute performance profiling according to the user command with the highest priority.
In this embodiment, different priorities may be set for different user commands depending on the actual situation, e.g. the highest priority may be set to indicate a pause of a profiling command.
The message queue is used for storing user commands to be executed, and when more than two user commands exist in the message queue, the priority of the user commands in the message queue is determined so as to call the injection code to be executed according to the user command with the highest priority; and if the priorities of the user commands in the message queue are the same, executing the user commands according to the received time sequence. And after the user command in the message queue begins to be executed, deleting the user command from the message queue.
Further, in an optional embodiment of the present application, the method may further include:
storing the execution result of the performance analysis into a result queue;
and extracting and displaying the execution result from the result queue.
For example, when the user command is a command indicating to collect profile data, the injection code is called to collect and return performance profile data, and the returned performance profile data is stored in a result queue; and extracting the performance profiling data from the result queue and displaying the performance profiling data.
Further, the step of clearing the injection code when the user command is an exit profile command, further comprises:
and disconnecting the connection with the target process.
The performance analysis method provided by the embodiment of the application can be applied to a performance analysis client, and can realize real-time performance analysis on the target object of the target process of the remote target equipment; and the operation platform of the target equipment is not limited; in addition, the corresponding injection code can be automatically generated according to the configuration data set by the user and injected into the target process without modifying the source code of the target process; and the performance analysis process can be controlled according to the user command, so that the controllability of the performance analysis process is realized.
Referring to fig. 2, a flowchart of steps of a performance profiling method according to an embodiment of the present application is shown, where the method is used for performing performance profiling on an application program, and the method is particularly suitable for performing performance profiling on a program in a Python scripting language based on characteristics of the Python dynamic interpreted language. In this embodiment, the method may be applied to a performance profiling client, and the method may be executed by a device that installs and runs the performance profiling client, where the device may be a target device to be profiled, and the target device may be a terminal device or a server, so as to perform performance profiling on an application program in the target device; the device may also be a third-party device, and the performance of the application program in the target device to be profiled is profiled by the third-party device.
In this embodiment, the performance profiling client may include a first thread and a second thread, and the method may specifically include the following steps:
step 201, the first thread acquires configuration data and sends the configuration data to the second thread, and the second thread generates a corresponding injection code according to the configuration data.
Configuration data may be entered by a user in a configuration settings interface, typically including configuration information related to a target object to be profiled; wherein the target object to be parsed may be a module or component or the like in the target process.
Taking a running game application as an example of a target process, when a target object is a certain role in the running game application, the configuration data may include a name of a game role to be analyzed so as to analyze the performance of the role; when the target program object is a certain type of character in the running game application program, the configuration data may include a name of a character class to be analyzed, so as to analyze the performance of the game character of the type.
And the second thread can automatically generate injection codes to be injected according to the received configuration data and based on a preset code template and a code modification protocol. When the target object to be analyzed changes, the user only needs to modify the corresponding configuration data, and the injection code for the modified target object can be automatically generated, so that the operation is convenient and efficient.
In a specific implementation, after the user inputs the configuration data, the first thread may further store the configuration data, and may directly obtain the stored configuration data when performing the performance profiling next time. Thus, when the same target object performance is profiled again, the configuration data may not be entered repeatedly.
Step 202, the second thread injects the injection code into a target process to be profiled.
The target process to be parsed may be determined in advance by a user, and the second thread, by interfacing with the target process, may inject the injection code into the target process, which is run by the target process.
In an optional embodiment of the present application, when the performance profiling client operates in a third-party device, the configuration data may further include connection information with the target process, specifically, the user may input the connection information connected with the target process in the configuration interface, where the connection information may include IP port information of the target device; the step 102 may include the following sub-steps:
the second thread determines the connection information of the target process according to the configuration data;
the second thread sends a connection request to the target process according to the connection information;
and after receiving the information of successful connection with the target process, the second thread injects the injection code into the target process.
In this embodiment, the second thread may obtain connection information of the target process through the configuration data, for example, IP port information and a connection mode; the connection mode may be a Telnet (remote terminal protocol) or Socket (Socket) network connection mode. According to the IP port information and the connection mode, a connection request can be sent to the target equipment; when a target process of the target device exists, that is, when a target application corresponding to the target process is in a running state, the target device may receive a connection request to establish a connection with the performance profiling client. And after the second thread receives the information of successful connection with the target process, injecting the injection code into the target process, namely sending the injection code to the target process of the target equipment.
Specifically, the injection code comprises a code injection module code segment, and the code injection module code segment is determined by an import code input by a user in a configuration setting interface; it can be understood that the configuration data may further include an import code input by a user, where the import code is a legal code based on the target process and does not adversely affect the logic and security of the target process. When the target process runs the code injection module code segment in the injection code, the target object to be profiled may be determined and the injection code is injected into the corresponding location of the target process.
When the target process of the target device does not exist, that is, the target application program corresponding to the target process does not exist, or is not in a running state, the target device may return information of connection failure to the performance profiling client, and in this case, the injection code cannot be injected into the target process.
In a specific implementation, when a target application of a target device is started, that is, when a target process is generated, a dedicated IP port is simultaneously started to wait for a connection with a performance profiling client running on a third-party device. It should be noted that whether the target device is connected to the performance profiling client executed by the third-party device does not affect the normal operation of the target application. Therefore, whether in a test environment or a formal environment, the running of the performance profiling client does not affect the target application. For example, when the target application is a game application, the performance of the game application is analyzed, and the normal game experience of the player is not affected.
Further, in order to ensure the security of the target process and prevent illegal connection, the connection information with the target process in the configuration data may further include connection verification information, such as a key, a password, and the like. The process of sending, by the second thread, the connection request to the target process according to the connection information may include sending, by the second thread, a connection request to the target device according to the IP port information, where the connection request includes connection verification information. When a target process of the target device exists and the connection verification information is verified, the target device may establish a connection with the performance profiling client.
Step 203, the first thread receives a user command and sends the user command to the second thread.
In this embodiment, the user may send a user command through the device running the performance profiling client; specifically, the user may send a user command to the performance profiling client by clicking a related control in the device interactive interface, or by inputting related information in an input box in the interactive interface, or the like.
The user commands may comprise a control type of command and a setting type of command, wherein a control type of command may refer to a user command controlling the performance profiling process, e.g. a command instructing to start a profiling process, a command instructing to collect profiling data, a command instructing to suspend a profiling process, etc., and a setting type of command may refer to a user command not affecting the current performance profiling process, e.g. a command to change a target device, a command to save configuration data, etc.
It will be appreciated that control type commands are associated with call injection code, whereas setup type commands are not directly associated with call injection code. Therefore, the first thread needs to classify the received user command, and step 203 may include the following steps:
the first thread determines the type of the user command;
and the first thread stores the user command meeting the preset condition type into the message queue.
The preset condition type can be a control type, and the message queue is used for storing user commands of the control type to be executed. When the user command is a control type command, the user command is stored in a message queue for the second thread to extract and use.
It should be noted that the first thread and the second thread may share a message queue, but a thread lock needs to be set for the message queue.
Further, in this embodiment, it may be considered that the command indicating to exit from the parsing module has the highest priority, and therefore, when the first thread receives the user command, it needs to first determine whether the user command is the command to exit from the parsing module; if yes, informing the second thread to clear the injection code; if not, the type of the user command is further determined.
Step 204, the second thread invokes the injection code to perform performance profiling according to the user command.
When a user command exists in the message queue, the second thread calls the injection code to execute the performance profiling according to the user command. In this embodiment, the injection code may further include a control module code segment and a data collection module code segment, wherein the control module code segment is used to determine a code segment for executing the user command.
Specifically, the following cases may be included but not limited to:
when the user command is an indicate to start profiling command, a second thread invokes the injection code to initiate performance profiling. It will be appreciated that when an instruction to initiate a profile command is received, the second thread invokes the code segment of the control module injecting code to execute the code segment associated with the instruction to initiate a profile command to monitor the performance of the target object.
When the user command is a collect profile data command, a second thread invokes the injection code to collect and return performance profile data. It will be appreciated that when a command is received instructing the collection of profile data, the second thread invokes the control module code segment injecting code to execute the data collection module code segment to collect and return performance profile data for the target object.
When the user command is an indicate pause profiling command, a second thread invokes the injection code to pause performance profiling. It is to be appreciated that upon receiving an instruction to halt a profiling command, the second thread calls the code segment of the control module injecting code to halt execution of the code segment related to the instruction to start a profiling command to halt monitoring of the behavior of the target object.
Further, in an optional embodiment of the present application, the step 204 may further include the following steps:
when more than two user commands exist in the message queue, a second thread determines the priority of the user commands in the message queue;
and the second thread calls the injection code to execute performance profiling according to the user command with the highest priority.
In this embodiment, different priorities may be set for different user commands depending on the actual situation, e.g. the highest priority may be set to indicate a pause of a profiling command.
The message queue is used for storing user commands to be executed, and when more than two user commands exist in the message queue, the second thread determines the priority of the user commands in the message queue so as to call the injection code to be executed according to the user command with the highest priority; and if the priorities of the user commands in the message queue are the same, executing the user commands according to the received time sequence. When the user command in the message queue begins to be executed, the second thread deletes the user command from the message queue.
Further, in an optional embodiment of the present application, the method may further include:
storing the execution result of the performance analysis into a result queue;
and extracting and displaying the execution result from the result queue.
For example, when the user command is a command indicating to collect profile data, the second thread calls the injection code to collect and return a performance profile number, and stores the performance profile data in a result queue; extracting, by a first thread, the performance profiling data from the result queue and presenting the performance profiling data.
It should be noted that the first thread and the second thread may share the result queue, but a thread lock needs to be set for the result queue.
Further, the step of the first thread notifying the second thread to clear the injection code when the user command is an exit profile command, further comprises:
the first thread notifies the second thread to disconnect from the target process.
In order to make the technical solutions of the present application more clearly understood by those skilled in the art, the following description will be made of the execution flows in the performance profiling process from the first thread side, the second thread side, and the target device side to be profiled, respectively.
As shown in fig. 3, an execution flow of the first thread in implementing the performance profiling method provided by the embodiment of the present application includes the following steps:
step 301, starting a first thread; when the performance analysis client is started, starting basic modules such as a first thread, a client interface and the like;
step 302, acquiring configuration data; the configuration data can be the configuration data stored by the user last time or the configuration data input by the user through the configuration interface at this time; the configuration data may include IP port information, connection mode, etc. of the target device;
step 303, starting a second thread;
step 304, receiving a user command; at this point the first thread enters the main loop logic, waiting to receive a user command. A user can send a command by clicking a button or an input box of a client interface to input information and the like;
step 306, judging whether the command is an instruction to quit the analysis command; if yes, go to step 307; if not, go to step 308;
step 307, notifying the second thread to exit parsing; after waiting for the second thread to quit, the first thread quits and the system is closed, namely the performance analysis client is closed;
step 308, determining whether the user command needs to be sent to the second thread; if yes, go to step 310; if not, go to step 309;
step 309, processing the user command; for user commands which do not need to be sent to the second thread for processing, the user commands are processed by the first thread, and the user commands can comprise target equipment changing, configuration saving and the like;
step 310, storing the user command to a message queue of a second thread; when a user command needs to be sent to a second thread for processing, the first thread packages the user command and corresponding data into a message and adds the message to a proper position of a message queue of the second thread;
step 311, determining whether the result queue has data; if yes, go to step 312; if not, returning to the step 304; the result queue refers to an execution result returned by the second thread executing the user command;
step 312, taking out the data from the result queue and displaying the data on a client interface; returning to step 304.
As shown in fig. 4, an execution flow of the second thread in implementing the performance profiling method provided by the embodiment of the present application includes the following steps:
step 401, starting a second thread; after the first thread acquires the configuration data, the second thread is started;
step 402, judging whether an instruction sent by a main thread is received to quit the analysis command; if yes, go to step 406; if not, go to step 403;
step 403, whether a user command exists in the message queue; if yes, go to step 404; if not, returning to the step 402; the message queue is used for storing user commands to be processed by the second thread, when the user commands do not exist in the message queue, the second thread can enter a dormant state, and when the user commands appear in the message queue, the second thread is automatically activated; the user commands may include an instruct connect/disconnect target process command, an instruct generate and inject code command, an instruct start profiling command, an instruct collect profiling data command, an instruct pause profiling command, an instruct change performance profiling target command, an instruct add performance profiling target command, etc.;
step 404, reading a user command and executing; when a plurality of user commands exist in the message queue, reading the user command with the highest priority from the message queue;
step 405, delivering the execution result of the user command to a result queue of the first thread; and returns to step 403;
step 406, cleaning the injection code and restoring the target program environment;
step 407, end the second thread.
As shown in fig. 5, an execution flow of the target device in implementing the performance profiling method provided by the embodiment of the present application includes the following steps:
step 501, starting a target application program; when the target process is started, a Socket or Telnet network service is started at the same time; the network service is independent of the main logic of the target application program, and does not influence the normal operation of the target application program;
step 502, waiting for connection; the network service is used for connecting with the performance profiling client;
step 503, the connection is successful; when a correct connection request sent by a performance analysis client is received, establishing network connection with the performance analysis client;
step 504, receiving a command; the command is sent by the performance profiling client;
step 505, analyzing the execution command; when receiving a command, firstly judging whether the command is a disconnection command, if so, disconnecting the network connection with the performance analysis client; if not, executing the command, and returning an execution result to the performance analysis client; and then returns to step 504.
It should be noted that, for simplicity of description, the method embodiments are described as a series of acts or combination of acts, but those skilled in the art will recognize that the embodiments are not limited by the order of acts described, as some steps may occur in other orders or concurrently depending on the embodiments. Further, those skilled in the art will also appreciate that the embodiments described in the specification are presently preferred and that no particular act is required of the embodiments of the application.
Referring to fig. 6, a block diagram of a performance profiling apparatus provided in an embodiment of the present application is shown, where the apparatus is used for performing performance profiling on an application program, and the method is particularly suitable for performing performance profiling on a program in a Python scripting language based on characteristics of the Python dynamic interpreted language.
In this embodiment, the apparatus may specifically include the following modules:
a first obtaining module 601, configured to obtain configuration data and generate a corresponding injection code according to the configuration data;
a code injection module 602, configured to inject the injection code into a target process to be parsed;
a receive command module 603 for receiving a user command;
an execution profiling module 604 for invoking the injection code to perform performance profiling according to the user command.
In a preferred embodiment of the present application, the command receiving module 603 may include:
the first judgment module is used for judging whether the user command is an instruction for quitting the analysis command;
a code clearing module for clearing the injection code if the user command is a command indicating to quit the parsing;
the type determining module is used for determining the type of the user command if the user command does not indicate to quit the analysis command;
and the command storage module is used for storing the user commands meeting the preset condition types into the message queue.
In a preferred embodiment of the present application, the execution profiling module 604 may include:
the priority determining module is used for determining the priority of the user commands in the message queue when more than two user commands exist in the message queue;
and the command execution module is used for calling the injection code execution performance analysis according to the user command with the highest priority.
In a preferred embodiment of the present application, the code injection module 602 may include:
the connection information determining module is used for determining the connection information of the target process according to the configuration data;
a connection request sending module, configured to send a connection request to the target process according to the connection information;
and the connection injection module is used for injecting the injection code into the target process after receiving the information of successful connection with the target process.
In a preferred embodiment of the present application, the code clearing module may further include:
a disconnection submodule for disconnecting the connection with the target process
In a preferred embodiment of the embodiments of the present application, the apparatus may further include:
the result storage module is used for storing the execution result of the performance analysis into a result queue;
and the result display module is used for extracting and displaying the execution result from the result queue.
For the device embodiment, since it is basically similar to the method embodiment, the description is simple, and for the relevant points, refer to the partial description of the method embodiment.
An embodiment of the present application also provides an electronic device, which may include a processor, a memory, and a computer program stored on the memory and capable of running on the processor, wherein the computer program, when executed by the processor, implements the steps of the performance profiling method as described above.
An embodiment of the present application further provides a computer-readable storage medium, on which a computer program is stored, which, when being executed by a processor, implements the steps of the performance profiling method as described above.
The embodiments in the present specification are described in a progressive manner, each embodiment focuses on differences from other embodiments, and the same and similar parts among the embodiments are referred to each other.
As will be appreciated by one of skill in the art, embodiments of the present application may be provided as a method, apparatus, or computer program product. Accordingly, embodiments of the present application may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, embodiments of the present application may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
Embodiments of the present application are described with reference to flowchart illustrations and/or block diagrams of methods, terminal devices (systems), and computer program products according to embodiments of the application. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing terminal to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing terminal, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing terminal to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing terminal to cause a series of operational steps to be performed on the computer or other programmable terminal to produce a computer implemented process such that the instructions which execute on the computer or other programmable terminal provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
While preferred embodiments of the present application have been described, additional variations and modifications of these embodiments may occur to those skilled in the art once they learn of the basic inventive concepts. Therefore, it is intended that the appended claims be interpreted as including the preferred embodiment and all such alterations and modifications as fall within the true scope of the embodiments of the application.
Finally, it should also be noted that, herein, relational terms such as first and second, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. Also, the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or terminal that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or terminal. Without further limitation, an element defined by the phrase "comprising an … …" does not exclude the presence of other like elements in a process, method, article, or terminal that comprises the element.
The method and apparatus for analyzing performance, the electronic device, and the storage medium provided by the present application are introduced in detail above, and a specific example is applied in the present application to explain the principle and the implementation of the present application, and the description of the above embodiment is only used to help understand the method and the core idea of the present application; meanwhile, for a person skilled in the art, according to the idea of the present application, there may be variations in the specific embodiments and the application scope, and in summary, the content of the present specification should not be construed as a limitation to the present application.

Claims (15)

1. A performance profiling method applied to a performance profiling client, the method comprising:
acquiring configuration data and generating a corresponding injection code according to the configuration data;
injecting the injection code into a target process to be parsed;
receiving a user command;
and calling the injection code to execute performance profiling according to the user command.
2. The method of claim 1, wherein the step of receiving a user command comprises:
judging whether the user command is an instruction to quit the analysis command;
if the user command is an instruction to quit the analysis command, clearing the injection code;
if the user command does not indicate to exit the parsing command, determining the type of the user command;
and storing the user command meeting the preset condition type into a message queue.
3. The method of claim 2, wherein invoking the step of performing performance profiling by the injection code upon the user command comprises:
when more than two user commands exist in the message queue, determining the priority of the user commands in the message queue;
and calling the injection code to execute performance profiling according to the user command with the highest priority.
4. The method of claim 3, wherein the step of injecting the injection code into the target process to be profiled comprises:
determining the connection information of the target process according to the configuration data;
sending a connection request to the target process according to the connection information;
and after receiving the information of successful connection with the target process, injecting the injection code into the target process.
5. The method of claim 4, wherein clearing the injection code if the user command is an exit profile command further comprises:
and disconnecting the connection with the target process.
6. The method according to any one of claims 1-6, further comprising:
storing the execution result of the performance analysis into a result queue;
and extracting and displaying the execution result from the result queue.
7. A performance profiling method applied to a performance profiling client, the performance profiling client comprising a first thread and a second thread, the method comprising:
the first thread acquires configuration data and sends the configuration data to the second thread, and the second thread generates a corresponding injection code according to the configuration data;
the second thread injects the injection code into a target process to be analyzed;
the first thread receives a user command and sends the user command to the second thread;
the second thread invokes the injection code to perform performance profiling in accordance with the user command.
8. The method of claim 7, wherein the step of the first thread receiving a user command and sending the user command to the second thread comprises:
the first thread judges whether the user command is an instruction to quit the analysis command;
if the user command is an instruction to exit a profiling command, the first thread notifies the second thread to clear the injection code;
if the user command does not indicate to exit from a parsing command, the first thread determines a type of the user command;
and the first thread sends the user command meeting the preset condition type to the message queue of the second thread.
9. The method of claim 8, wherein the step of the second thread invoking the injection code to perform performance profiling upon the user command comprises:
when there are more than two user commands in the message queue, the second thread determines a priority of the user commands in the message queue;
and the second thread calls the injection code execution performance profiling according to the user command with the highest priority.
10. The method of claim 9, wherein the step of the second thread injecting the injection code into the target process to be profiled comprises:
the second thread determines the connection information of the target process according to the configuration data;
the second thread sends a connection request to the target process from the connection information;
and after receiving the information that the target process is successfully connected, the second thread injects the injection code into the target process.
11. The method of claim 10, wherein the step of the first thread notifying the second thread to clear the injection code if the user command is an exit profile command further comprises:
the first thread notifies the second thread to disconnect from the target process.
12. The method according to any one of claims 8-11, further comprising:
the second thread stores the execution result of the performance analysis into a result queue;
and the first thread extracts and displays the execution result from the result queue.
13. A performance profiling apparatus, the apparatus comprising:
the first acquisition module is used for acquiring configuration data and generating a corresponding injection code according to the configuration data;
the code injection module is used for injecting the injection code into a target process to be analyzed;
the command receiving module is used for receiving a user command;
and the execution profiling module is used for calling the injection code to execute performance profiling according to the user command.
14. An electronic device, comprising a processor, a memory and a computer program stored on the memory and being executable on the processor, the computer program, when executed by the processor, implementing the steps of the performance profiling method according to any one of claims 1 to 12.
15. A computer-readable storage medium, on which a computer program is stored which, when being executed by a processor, carries out the steps of the performance profiling method according to any one of claims 1 to 12.
CN202110009524.7A 2021-01-05 2021-01-05 Performance analysis method and device, electronic equipment and storage medium Pending CN112631891A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110009524.7A CN112631891A (en) 2021-01-05 2021-01-05 Performance analysis method and device, electronic equipment and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110009524.7A CN112631891A (en) 2021-01-05 2021-01-05 Performance analysis method and device, electronic equipment and storage medium

Publications (1)

Publication Number Publication Date
CN112631891A true CN112631891A (en) 2021-04-09

Family

ID=75290763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110009524.7A Pending CN112631891A (en) 2021-01-05 2021-01-05 Performance analysis method and device, electronic equipment and storage medium

Country Status (1)

Country Link
CN (1) CN112631891A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434402A (en) * 2021-06-24 2021-09-24 中国工商银行股份有限公司 Performance analysis method, device and equipment for micro-service application
CN114610406A (en) * 2022-03-02 2022-06-10 维塔科技(北京)有限公司 Code injection method, device, storage medium and electronic equipment

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073580A (en) * 2011-02-01 2011-05-25 华为技术有限公司 Performance analyzing method and tool and computer system
CN102855179A (en) * 2011-06-30 2013-01-02 国际商业机器公司 Program debugging method and system in virtual machine environment
CN103366801A (en) * 2012-03-29 2013-10-23 三星电子株式会社 Memory device and method of operating the same
CN104137062A (en) * 2012-02-09 2014-11-05 微软公司 Dynamic injection of code into running process
CN107967224A (en) * 2017-10-12 2018-04-27 记忆科技(深圳)有限公司 A kind of method of solid state hard disc improving performance uniformity
CN108446224A (en) * 2018-03-06 2018-08-24 福建天泉教育科技有限公司 The method for analyzing performance, storage medium of application program on mobile terminal
CN109740345A (en) * 2018-12-26 2019-05-10 北京神州绿盟信息安全科技股份有限公司 A kind of method and device of monitoring process
CN109766253A (en) * 2018-12-15 2019-05-17 平安证券股份有限公司 A kind of performance data sending method, device, computer equipment and storage medium
CN110069358A (en) * 2019-04-18 2019-07-30 彩讯科技股份有限公司 Call chain trace analysis method, apparatus, electronic equipment and storage medium
US10380350B1 (en) * 2019-01-15 2019-08-13 Cyberark Software Ltd. Efficient and comprehensive source code fuzzing
CN111124702A (en) * 2019-11-22 2020-05-08 腾讯科技(深圳)有限公司 Performance data acquisition method, device and computer readable storage medium

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073580A (en) * 2011-02-01 2011-05-25 华为技术有限公司 Performance analyzing method and tool and computer system
CN102855179A (en) * 2011-06-30 2013-01-02 国际商业机器公司 Program debugging method and system in virtual machine environment
CN104137062A (en) * 2012-02-09 2014-11-05 微软公司 Dynamic injection of code into running process
CN103366801A (en) * 2012-03-29 2013-10-23 三星电子株式会社 Memory device and method of operating the same
CN107967224A (en) * 2017-10-12 2018-04-27 记忆科技(深圳)有限公司 A kind of method of solid state hard disc improving performance uniformity
CN108446224A (en) * 2018-03-06 2018-08-24 福建天泉教育科技有限公司 The method for analyzing performance, storage medium of application program on mobile terminal
CN109766253A (en) * 2018-12-15 2019-05-17 平安证券股份有限公司 A kind of performance data sending method, device, computer equipment and storage medium
CN109740345A (en) * 2018-12-26 2019-05-10 北京神州绿盟信息安全科技股份有限公司 A kind of method and device of monitoring process
US10380350B1 (en) * 2019-01-15 2019-08-13 Cyberark Software Ltd. Efficient and comprehensive source code fuzzing
CN110069358A (en) * 2019-04-18 2019-07-30 彩讯科技股份有限公司 Call chain trace analysis method, apparatus, electronic equipment and storage medium
CN111124702A (en) * 2019-11-22 2020-05-08 腾讯科技(深圳)有限公司 Performance data acquisition method, device and computer readable storage medium

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434402A (en) * 2021-06-24 2021-09-24 中国工商银行股份有限公司 Performance analysis method, device and equipment for micro-service application
CN114610406A (en) * 2022-03-02 2022-06-10 维塔科技(北京)有限公司 Code injection method, device, storage medium and electronic equipment

Similar Documents

Publication Publication Date Title
US10853232B2 (en) Adaptive system for mobile device testing
WO2019085079A1 (en) Interface test method and apparatus, computer device and storage medium
US9898396B2 (en) Automated software testing and validation via graphical user interface
CN112380093A (en) Operation and maintenance processing method and device and computer equipment
CN110013672B (en) Method, device, apparatus and computer-readable storage medium for automated testing of machine-run games
US20110307870A1 (en) Execution capture and replay based debugging
CN112631891A (en) Performance analysis method and device, electronic equipment and storage medium
CN111488088B (en) Equipment state identification method and device and intelligent terminal
KR102243379B1 (en) Method and apparatus for automating game test
CN102347941A (en) Open-platform-based security application control method
CN113792341B (en) Automatic detection method, device, equipment and medium for privacy compliance of application program
CN110347085A (en) Automatization test system, method, vehicle and computer-readable medium
WO2017206476A1 (en) Method, device and apparatus for detecting cpu occupation
CN112559348B (en) Test analysis method, system, equipment and medium based on jacoco
CN112054822A (en) Bluetooth test method and device, electronic equipment and storage medium
CN105512562B (en) Vulnerability mining method and device and electronic equipment
KR20150025106A (en) Verification apparatus, terminal device, system, method and computer-readable medium for monitoring of application verification result
CN110543429A (en) Test case debugging method and device and storage medium
CN106791982B (en) Account management method and device
CN112988267A (en) Loading method and device, storage medium and electronic equipment
CN115688706A (en) Information verification method, device, equipment and storage medium
CN105528221B (en) Electronic equipment reset processing method and device
CN105912431A (en) Reboot testing method of server, server, control device and system
CN111666200A (en) Testing method and terminal for time consumption of cold start of PC software
CN107220149B (en) Method and system for capturing debugging data of wireless communication module in Linux system under Windows

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210409