@specs-feup/clava
Version:
A C/C++ source-to-source compiler written in Typescript
83 lines • 2.95 kB
TypeScript
import MemoiTarget from "./MemoiTarget.js";
/**
* Library to instrument applications with the memoiprof profiling library.
*
* @param targetSig - The signature of the target funtion
* @param id - Unique ID representing this function
* @param reportDir - Path to the directory where the report will be saved (does not need trailing /)
*/
export default class MemoiProf {
private target;
private id;
private reportDir;
/**
* Options for memoiprof.
*/
private memoiprofOptions;
constructor(target: MemoiTarget, id: string, reportDir: string);
setSampling(samplingKind: SamplingKind, samplingRate: number): void;
setPeriodicReporting(periodicReportKind: boolean, periodicReportRate: number): void;
setCulling(cullingKind: boolean, cullingRatio: number): void;
setApprox(approxKind: boolean, approxBits: number): void;
/**
* Profiles all calls of the target function. This includes making a single
* wrapper for all calls and adding the memoization profiling code inside this
* wrapper.
* */
profAll(): void;
/**
* Profiles each call to the target function separately. This includes
* making a wrapper for each call and adding the memoization profiling code
* inside the wrapper.
* */
profEach(): void;
private memoiInstrumentWrapper;
private memoiSetup;
private memoiAddCallSiteInfo;
}
export declare enum SamplingKind {
RANDOM = "random",
FIXED = "fixed",
OFF = "off"
}
/**
* Class used to store memoiprof options.
* */
export declare class MemoiprofOptions {
private _samplingKind;
private _samplingRate;
private _periodicReportKind;
private _periodicReportRate;
private _cullingKind;
private _cullingRatio;
private _approxKind;
private _approxBits;
get samplingKind(): SamplingKind;
get samplingRate(): number;
get periodicReportKind(): boolean;
get periodicReportRate(): number;
get cullingKind(): boolean;
get cullingRatio(): number;
get approxKind(): boolean;
get approxBits(): number;
/**
* Supported samplingKind values are: 'random', 'fixed', 'off'.
* For 1/x sampling, samplingRate should be x.
* */
setSampling(samplingKind: SamplingKind, samplingRate: number): void;
/**
* Supported periodicReportKind values are: true, false.
* periodicReportRate is the number of calls between writes of periodic reports.
* */
setPeriodicReporting(periodicReportKind: boolean, periodicReportRate: number): void;
/**
* Supported cullingKind values are: true, false.
* cullingRatio is the threshold (% of calls) for printing to the JSON.
* */
setCulling(cullingKind: boolean, cullingRatio: number): void;
/**
* Supported approxKind values are: true, false.
* */
setApprox(approxKind: boolean, approxBits: number): void;
}
//# sourceMappingURL=MemoiProf.d.ts.map