# US 11,442,966 B2 · High-performance statistics

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,442,966 B2
- Document ID: US11442966B2
- Status: Granted
- Kind: B2
- Application number: 16/373,383
- Filed: 2019-04-02
- Published: 2020-10-08
- Granted: 2022-09-13
- Earliest claimed: 2019-04-02
- Assignees: Sap SE
- Applicants: Sap SE
- Inventors: Ivan Schreter
- Web page: https://patentgrep.com/patent/US11442966B2

## CPC

- G06F 11/3466: {Performance evaluation by tracing or monitoring}
- G06F 16/289: {Object oriented databases}
- G06F 16/219: {Managing data history or versioning (querying versioned data G06F16/2474; querying temporal data G06F16/2477)}
- G06F 17/18: for evaluating statistical data {, e.g. average values, frequency distributions, probability functions, regression analysis (forecasting specially adapted for a specific administrative, business or logistic context G06Q10/04)}
- G06F 11/3409: {for performance assessment}
- G06F 2201/80: Database-specific techniques
- G06F 2201/865: Monitoring of software
- G06F 2201/88: Monitoring involving counting
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method of managing highly-volatile statistics of a multi-threaded application environment. The statistics are represented by one or more statistics objects. Each statistics object of the one or more statistics objects is prefixed with an object header having a version counter with an initial version count of zero. Each statistics object is associated with a statistics class instance, each statistics class instance being associated with an associative registry that is configured to allocate smallest possible objects of a size equal to or greater than to that of the statistics objects, the registry segmenting the statistics objects according to a size class. Each allocated statistics object is constructed in the object frame after the object header. Then, the object header of each allocated statistics object is initialized. Once allocated, objects can be deallocated.

## Claims

### Claim 1

A computer-implemented method of managing highly-volatile statistics of a multi-threaded application environment, the statistics being represented by one or more statistics objects, the method comprising:
prefixing, to each statistics object of the one or more statistics objects, an object header having an owner identifier to identify an owner of the corresponding statistics object and a version counter with an initial version count of zero to indicate a new statistical object, wherein an even version count indicates an invalid statistical object and an odd version count indicates a valid statistical object;
associating each statistics object with a statistics class instance, each statistics class instance being associated with an associative registry that is configured to allocate smallest possible objects of a size equal to or greater than to that of the one or more statistics objects, the associative registry segmenting the statistics objects according to a size class;
constructing each allocated statistics object in the object frame after the object header; and
initializing the object header of each allocated statistics object by executing a store/store memory barrier and incrementing the version counter by a count of one to mark the associated allocated statistics object as valid.

### Claim 2 (depends on 1)

The method in accordance with claim 1, further comprising:
deallocating an allocated statistics object by incrementing the version counter by a count of one to mark the associated valid allocated object as invalid; and
destroying the allocated statistics object marked as invalid.

### Claim 3 (depends on 1)

The method in accordance with claim 1, further comprising:
for each statistics object to be allocated to a thread of the multi-threaded application environment, allocating an object frame associated with each allocated object to the thread while maintaining the object header.

### Claim 4 (depends on 1)

The method in accordance with claim 1, further comprising enumerating, by an associative registry, each statistics object for later querying.

### Claim 5 (depends on 1)

The method in accordance with claim 1, wherein the statistics class instance is provided in a hierarchy that is configured to expressed derived statistics.

### Claim 6

A system for allocating memory to a thread of a multi-threaded program, the system comprising:
a programmable processor; and
a machine-readable medium storing instructions that, when executed by the processor, cause the at least one programmable processor to perform operations comprising:
prefix, to each statistics object of the one or more statistics objects, an object header having an owner identifier to identify an owner of the corresponding statistics object and a version counter with an initial version count of zero to indicate a new statistical object, wherein an even version count indicates an invalid statistical object and an odd version count indicates a valid statistical object;
associate each statistics object with a statistics class instance, each statistics class instance being associated with an associative registry that is configured to allocate smallest possible objects of a size equal to or greater than to that of the one or more statistics objects, the associative registry segmenting the statistics objects according to a size class;
construct each allocated statistics object in the object frame after the object header; and
initialize the object header of each allocated statistics object by executing a store/store memory barrier and incrementing the version counter by a count of one to mark the associated allocated statistics object as valid.

### Claim 7 (depends on 6)

The system in accordance with claim 6, wherein the operations further comprise operations to:
deallocate an allocated statistics object by incrementing the version counter by a count of one to mark the associated valid allocated object as invalid; and
destroy the allocated statistics object marked as invalid.

### Claim 8 (depends on 6)

The system in accordance with claim 6, wherein the operations further comprise an operation to, for each statistics object to be allocated to a thread of the multi-threaded application environment, allocate an object frame associated with each allocated object to the thread while maintaining the object header.

### Claim 9 (depends on 6)

The system in accordance with claim 6, wherein the operations further comprise an operation to enumerate, by an associative registry, each statistics object for later querying.

### Claim 10 (depends on 6)

The system in accordance with claim 6, wherein the statistics class instance is provided in a hierarchy that is configured to expressed derived statistics.

### Claim 11

A computer program product comprising a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:
prefix, to each statistics object of the one or more statistics objects, an object header having an owner identifier to identify an owner of the corresponding statistics object and a version counter with an initial version count of zero to indicate a new statistical object, wherein an even version count indicates an invalid statistical object and an odd version count indicates a valid statistical object;
associate each statistics object with a statistics class instance, each statistics class instance being associated with an associative registry that is configured to allocate smallest possible objects of a size equal to or greater than to that of the one or more statistics objects, the associative registry segmenting the statistics objects according to a size class;
construct each allocated statistics object in the object frame after the object header; and
initialize the object header of each allocated statistics object by executing a store/store memory barrier and incrementing the version counter by a count of one to mark the associated allocated statistics object as valid.

### Claim 12 (depends on 11)

The computer program product in accordance with claim 11, wherein the operations further comprise operations to:
deallocate an allocated statistics object by incrementing the version counter by a count of one to mark the associated valid allocated object as invalid; and
destroy the allocated statistics object marked as invalid.

### Claim 13 (depends on 11)

The computer program product in accordance with claim 11, wherein the operations further comprise an operation to, for each statistics object to be allocated to a thread of the multi-threaded application environment, allocate an object frame associated with each allocated object to the thread while maintaining the object header.

### Claim 14 (depends on 11)

The computer program product in accordance with claim 11, wherein the operations further comprise an operation to enumerate, by an associative registry, each statistics object for later querying.

### Claim 15 (depends on 11)

The computer program product in accordance with claim 11, wherein the statistics class instance is provided in a hierarchy that is configured to expressed derived statistics.
