IP Library Granted Patent US 8,745,625
Granted Patent B2
US 8,745,625 · App. 13/306,921 · Granted Jun 3, 2014

System, method and computer program product for conditionally executing related reports in parallel based on an estimated execution time

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,745,625
App. No.
13/306,921
Granted
Jun 3, 2014
Kind
B2
Abstract

In accordance with embodiments, there are provided mechanisms and methods for conditionally executing related reports in parallel based on an estimated execution time. These mechanisms and methods for conditionally executing related reports in parallel based on an estimated execution time can provide parallel execution of related reports when predetermined time-based criteria are met. The ability to conditionally provide parallel execution of related reports can reduce overhead caused by such parallel execution when the time-based criteria is met.

Claims (28)

1. A computer program product, comprising a non-transitory computer usable medium having a computer readable program code embodied therein, the computer readable program code adapted to be executed to implement a method, the method comprising:

receiving at a first processor a request to execute a composite report including a plurality of related reports;

identifying the plurality of related reports to be executed;

determining an estimate of an amount of time to execute all of the identified plurality of related reports from a sub-estimate of an amount of time to execute each of the related reports, wherein the sub-estimate is determined for each of the related reports using statistics, and wherein the determined estimate is increased more when the request is received from an application than when the request is received from a user via a user interface;

performing a sequential execution of all of the identified plurality of related reports by the first processor when it is determined that the estimate is less than a predefined threshold amount of time; and

performing a parallel execution of all of the identified plurality of related reports by a plurality of distributed processors other than the first processor, such that each of the plurality of distributed processors executes a different one of the related reports, when it is determined that the estimate is greater than the predefined threshold amount of time.

2. The computer program product of claim 1 , wherein the related reports are individual reports that are related via at least one common object used for generating the related reports.

3. The computer program product of claim 2 , wherein the at least one common object is a table.

4. The computer program product of claim 2 , wherein each related report is a joined relationship between a different object and the at least one common object.

5. A method, comprising:

receiving at a first processor a request to execute a composite report including a plurality of related reports;

identifying the plurality of related reports to be executed;

determining an estimate of an amount of time to execute all of the identified plurality of related reports from a sub-estimate of an amount of time to execute each of the related reports, wherein the sub-estimate is determined for each of the related reports using statistics, and wherein the determined estimate is increased more when the request is received from an application than when the request is received from a user via a user interface;

performing a sequential execution of all of the identified plurality of related reports by the first processor when it is determined that the estimate is less than a predefined threshold amount of time; and

performing a parallel execution of all of the identified plurality of related reports by a plurality of distributed processors other than the first processor, such that each of the plurality of distributed processors executes a different one of the related reports, when it is determined that the estimate is greater than the predefined threshold amount of time.

6. An apparatus, comprising:

a first processor for:

receiving a request to execute a composite report including a plurality of related reports;

identifying the plurality of related reports to be executed;

determining an estimate of an amount of time to execute all of the identified plurality of related reports from a sub-estimate of an amount of time to execute each of the related reports, wherein the sub-estimate is determined for each of the related reports using statistics, and wherein the determined estimate is increased more when the request is received from an application than when the request is received from a user via a user interface; and

performing a sequential execution of all of the identified plurality of related reports by the first processor when it is determined that the estimate is less than a predefined threshold amount of time;

wherein a parallel execution of all of the identified plurality of related reports is performed by a plurality of distributed processors other than the first processor, such that each of the plurality of distributed processors executes a different one of the related reports, when it is determined that the estimate is greater than the predefined threshold amount of time.

7. A method for transmitting code, comprising:

transmitting code for receiving at a first processor a request to execute a composite report including a plurality of related reports;

transmitting code for identifying the plurality of related reports to be executed;

transmitting code for determining an estimate of an amount of time to execute all of the identified plurality of related reports from a sub-estimate of an amount of time to execute each of the related reports, wherein the sub-estimate is determined for each of the related reports using statistics, and wherein the determined estimate is increased more when the request is received from an application than when the request is received from a user via a user interface;

transmitting code for performing a sequential execution of all of the identified plurality of related reports by the first processor when it is determined that the estimate is less than a predefined threshold amount of time; and

transmitting code for performing a parallel execution of all of the identified plurality of related reports by a plurality of distributed processors other than the first processor, such that each of the plurality of distributed processors executes a different one of the related reports, when it is determined that the estimate is greater than the predefined threshold amount of time.

Assignments (2)
CHANGE OF NAME Recorded Oct 25, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069268/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2012
From: TOBIN, THOMAS J.; EROSHIN, VLADISLAV; ZHENG, ZUYE; LOUIE, PATRICK; LU, JEREMIAH; VARADHARAJAN, ARUNKUMARAN
To: SALESFORCE.COM, INC.
Reel/Frame 027645/0554 →