System and method for analyzing and tuning a marketing program
AssigneeResponsys, Inc.
InventorDayanand Dudyala
Life of this patent
Estimating the term…
Abstract
A method for permitting a program to be analyzed and tuned includes the steps of receiving a program which itself includes a plurality of stages, where execution of the program follows a plurality of distinct paths, each of the distinct paths including one or more of the stages. The method further includes determining unique paths of the program and determining execution boundaries of the program. In addition, the method includes persisting the unique paths and the execution boundaries in a database, and changing an execution of the program based on the persisted unique paths and execution boundaries.
Claims17
A method for tuning and executing a plurality of connected processes, the method comprising:
- identifying a plurality of stages of processing that are performed and consume computing resources including memory and processing cycles to transmit a plurality of electronic communications;
- reducing consumption of the computing resources to transmit the plurality of electronic communications at least by:
- identifying a first stage and a second stage within the plurality of stages of processing that are performed to transmit the plurality of electronic communications;
- identifying a plurality of distinct paths between the first stage and the second stage;
- determining that the plurality of distinct paths between the first stage and the second stage correspond to a thread boundary that identifies the first stage and the second stage within the plurality of distinct paths as being executable by a common thread on a server computer using the computing resources, the first stage being a filter stage, and the second stage being a campaign stage;
- merging outputs of the plurality of distinct paths between the first stage and the second stage into a merged group;
- persisting unique paths for the plurality of stages of processing and thread boundaries in a database on a database server;
- changing an execution of the plurality of stages at least by accessing at least some of the unique paths and the thread boundaries from a cache remote from the database server, instead of accessing the at least some of the unique paths and the thread boundaries from the database;
- determining that the filter stage, which filters input data to groups, and the campaign stage are connected by two or more paths within one of the thread boundaries, each of the two or more paths being used to process a respective group of the groups;
- in response to determining that the filter stage and the campaign stage in the plurality of stages of processing are connected by the two or more paths within the one of the thread boundaries:
- processing the groups in the two or more paths,
- merging the groups, which have been processed, into the merged group, and
- launching the campaign stage in a single launch for the merged group;
- and
- executing the single launch to transmit the plurality of electronic communications for the merged group.
A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause a computer system to perform a set of acts for tuning and executing a plurality of stages of processing, the set of acts comprising:
- identifying a plurality of stages of processing that are performed and consume computing resources including memory and processing cycles to transmit a plurality of electronic communications;
- reducing consumption of the computing resources to transmit the plurality of electronic communications at least by:
- identifying a first stage and a second stage within the plurality of stages of processing that are performed to transmit the plurality of electronic communications;
- identifying a plurality of distinct paths between the first stage and the second stage;
- determining that the plurality of distinct paths between the first stage and the second stage correspond to a thread boundary that identifies the first stage and the second stage within the plurality of distinct paths as being executable by a common thread on a server computer using the computing resources, the first stage being a filter stage, and the second stage being a campaign stage;
- merging outputs of the plurality of distinct paths between the first stage and the second stage into a merged group;
- persisting unique paths for the plurality of stages of processing and thread boundaries in a database on a database server;
- changing an execution of the plurality of stages at least by accessing at least some of the unique paths and the thread boundaries from a cache remote from the database server, instead of accessing the at least some of the unique paths and the thread boundaries from the database;
- determining that the filter stage, which filters input data to groups, and the campaign stage are connected by two or more paths within one of the thread boundaries, each of the two or more paths being used to process a respective group of the groups;
- in response to determining that the filter stage and the campaign stage in the plurality of stages of processing are connected by the two or more paths within the one of the thread boundaries:
- processing the groups in the two or more paths,
- merging the groups, which have been processed, into the merged group, and
- launching the campaign stage in a single launch for the merged group;
- and
- executing the single launch to transmit the plurality of electronic communications for the merged group.
A computer system, comprising:
- a non-transitory computer accessible storage medium storing thereupon a plurality of instructions;
- a processor configured to execute at least some of the plurality of instructions to
- identify a plurality of stages of processing that are performed and consume computing resources including memory and processing cycles to transmit a plurality of electronic communications,
- reduce consumption of the computing resources to transmit the plurality of electronic communications at least by:
- identifying a first stage and a second stage within the plurality of stages of processing that are performed to transmit the plurality of electronic communications;
- identifying a plurality of distinct paths between the first stage and the second stage;
- determining that the plurality of distinct paths between the first stage and the second stage correspond to a thread boundary that identifies the first stage and the second stage within the plurality of distinct paths as being executable by a common thread on a server computer using the computing resources, the first stage being a filter stage, and the second stage being a campaign stage,
- merging outputs of the plurality of distinct paths between the first stage and the second stage into a merged group;
- persisting unique paths for the plurality of stages of processing and thread boundaries in a database on a database server;
- changing an execution of the plurality of stages at least by accessing at least some of the unique paths and the thread boundaries from a cache remote from the database server, instead of accessing the at least some of the unique paths and the thread boundaries from the database;
- determining that the filter stage, which filters input data to groups, and the campaign stage are connected by two or more paths within one of the thread boundaries, each of the two or more paths being used to process a respective group of the groups;
- in response to determining that the filter stage and the campaign stage in the plurality of stages of processing are connected by the two or more paths within the one of the thread boundaries:
- processing the groups in the two or more paths,
- merging the groups, which have been processed, into the merged group, and
- launching the campaign stage in a single launch for the merged group;
- and
- executing the single launch to transmit the plurality of electronic communications for the merged group.
Dependencies are inferred from the claim text.