Li2hong666
(Lizhong Shen)
April 19, 2021, 1:17pm
1
Hi, I’m going to use PerfReportTool.exe to generate some reports from CSV files, it works fine if I use simple args, such as “-csvdir” and “-o”, but I don’t know more details for optional args, can I get its source code or example somewhere?
Yoy can find source code of tool if download engine with sources
…\Engine\Source\Programs\CSVTools\PerfReportTool
And here are the available launch arguments
**Primary Input Specification** (Required - one of the following)
Argument
Type
Required
Description
`-csv `
String
One required
Specify a single CSV file to process
`-csvdir `
String
One required
Specify a directory containing CSV files
`-csvList `
String
One required
Comma-separated list of CSV files
`-prcList `
String
One required
Comma-separated list of PRC (cached) files
`-summaryTableCacheIn `
String
One required
Read data from summary table cache directory
`-metadataProxy ` OR `-overrideMetadata `
String
One required
Use proxy metadata or override metadata directly
**Output**
Argument
Type
Required
Description
`-o `
String
Yes
Output directory (created if necessary)
**Report Configuration**
Argument
Type
Default
Description
`-reportType `
String
Optional
Report type (e.g., flythrough, playthrough, playthroughmemory)
`-reportTypeCompatCheck`
Boolean
False
Do compatibility check when specifying report type (rather than forcing)
`-graphXML `
String
Optional
XML file defining graph configurations
`-reportXML `
String
Optional
XML file defining report structure
`-reportxmlbasedir `
String
Optional
Base directory for report XML
`-summaryTableXML `
String
Optional
XML file defining summary tables
`-title `
String
Optional
Title for detailed reports
`-summaryTitle `
String
Optional
Title for summary tables
**Graph Configuration**
Argument
Type
Default
Description
`-maxy `
Float
Optional
Forces all graphs to use this maximum Y value
`-maxY `
Float
Optional
Alias for -maxy
`-noSmooth`
Boolean
False
Disable smoothing on all graphs
`-nosmooth`
Boolean
False
Alias for -noSmooth
`-useEmbeddedGraphUrl`
Boolean
False
Insert script to fetch graph dynamically on page load instead of embedding
`-embeddedGraphUrlRoot `
String
Optional
URL to fetch graphs from if -useEmbeddedGraphUrl is specified
**Data Filtering and Truncation** (disable Summary Table caching)
Argument
Type
Default
Description
`-minx `
Integer
0
Minimum frame number (inclusive)
`-minX `
Integer
0
Alias for -minx
`-maxx `
Integer
Int.MaxValue
Maximum frame number (inclusive)
`-maxX `
Integer
Int.MaxValue
Alias for -maxx
`-beginEvent `
String
Optional
Strip data before this event
`-endEvent `
String
Optional
Strip data after this event
`-noStripEvents`
Boolean
False
Don’t strip samples between excluded events from stats
**CSV Processing and Cleaning**
Argument
Type
Default
Description
`-cleanCsvOut `
String
Optional
Write standard format CSV after event stripping with metadata stripped (not in bulk mode)
`-writeSummaryCsv`
Boolean
False
Generate CSV file containing summary information (not in bulk mode)
**Bulk Mode Operations** (use with -csvdir, -csvList, -prcList, or -summaryTableCacheIn)
Argument
Type
Default
Description
`-recurse`
Boolean
False
Recursively search directories
`-searchpattern `
String
“*.csv;*.csv.bin”
File search pattern (e.g., “csvprofile*”)
`-noDetailedReports`
Boolean
False
Skip individual report generation
`-noReports`
Boolean
False
Skip all report generation
`-requireMetadata`
Boolean
False
Ignore CSVs without metadata
`-listFiles`
Boolean
False
List all files matching metadata query without generating reports
`-allowDuplicateCSVs`
Boolean
False
Don’t remove duplicate CSVs (may cause cache file locking issues)
`-minFrameCount `
Integer
0
Ignore CSVs with fewer than this many valid frames
`-maxFileAgeDays `
Integer
-1
Ignore CSV/PRC files older than this many days
**Summary Table Configuration**
Argument
Type
Default
Description
`-summaryTable `
String
“default”
Select custom summary table type from reportTypes.xml
`-condensedSummaryTable `
String
“condensed”
Select custom condensed summary table type
`-summaryTableFilename `
String
“SummaryTable”
Filename for summary table (without extension)
`-customTable `
String
Optional
Comma-separated fields to override metrics filter
`-customTableSort `
String
Optional
Comma-separated fields to override row sort order
`-readAllStats`
Boolean
False
Allow any CSV stat avg to appear in summary table
`-showHiddenStats`
Boolean
False
Show stats automatically hidden (duplicate csv unit stats)
**Summary Table Output Formatting**
Argument
Type
Default
Description
`-csvTable`
Boolean
False
Write summary table in CSV format instead of HTML
`-collateTable`
Boolean
False
Write collated table (merging by row sort) in addition to main table
`-collateTableOnly`
Boolean
False
Write only collated table (skips standard summary table)
`-emailTable`
Boolean
False
Write condensed email-friendly table
`-emailSummary`
Boolean
False
Enable email summary output
`-transposeTable`
Boolean
False
Write summary tables transposed
`-transposeCollatedTable`
Boolean
False
Write collated table transposed (disables min/max columns)
`-spreadsheetfriendly`
Boolean
False
Output single quote before non-numeric entries
`-noSummaryMinMax`
Boolean
False
Don’t create min/max columns in condensed summary
`-reverseTable [0|1]`
Integer/Boolean
Optional
Reverse order of summary tables
`-scrollableTable [0|1]`
Integer/Boolean
Optional
Make summary table scrollable with frozen first rows/columns
`-sortTrailingDigitsAsNumeric`
Boolean
False
Detect and pad trailing digits when sorting
`-maxSummaryTableStringLength `
Integer
Int.MaxValue
Truncate strings longer than this
**Summary Table Content Filtering**
Argument
Type
Default
Description
`-metadataFilter `
String
Optional
Filter by metadata (e.g., “platform=ps4 AND deviceprofile=ps4_60”)
`-summaryTableStatThreshold `
Integer
0
Filter out stat columns if all values below threshold
`-summaryTableXmlSubst =;…`
String
Optional
Replace summary table XML row and filter entries
`-summaryTableXmlAppend <list,of,stats>`
String
Optional
Append stats to summary table filter list
`-summaryTableXmlRowSortAppend <list,of,stats>`
String
Optional
Append stats to summary table row sort list
**Summary Table Colorization and Display**
Argument
Type
Default
Description
`-colorizeTable <off|budget|auto>`
Enum
XML-default
Table colorization mode
`-autoColorizeTable`
Boolean
False
Legacy support - use -colorizeTable instead
`-collatedStringVisibility <show|hide|auto>`
Enum
“auto”
String visibility in collated tables
`-collatedDateVisibility <hide|newest|oldest>`
Enum
“newest”
Date visibility in collated tables
`-columnSortMode `
Enum
“default”
Column sort mode (default, sortByMax, sortByAvg, wildCardSortByMax, wildCardSortByAvg)
`-hideMetadataColumns`
Boolean
False
Filter out metadata columns (except row sort)
**Weighted Averaging (Collated Tables)**
Argument
Type
Default
Description
`-weightByColumn `
String
Optional
Weight collated table averages by this column
`-noWeightedAvg`
Boolean
False
Don’t use weighted averages for collated table
**Difference Row Analysis**
Argument
Type
Default
Description
`-addDiffRows`
Boolean
False
Add diff rows after first two rows
`-sortColumnsByDiff`
Boolean
False
Sort columns by max diff score (use with -addDiffRows)
`-columnDiffDisplayThreshold `
Float
0.0
Hide columns with max diff below threshold
`-diffRowsAlternating [0|1]`
Boolean
True
Every other column has diff; otherwise pairs only
`-showOnlyDiffRows`
Boolean
False
Hide non-diff rows; combine common text fields
**Regression Filtering**
Argument
Type
Default
Description
`-onlyShowRegressedColumns`
Boolean
False
Show only columns outside threshold from mean
`-regressionJoinRowsByName `
String
Optional
Stat name to join rows by for aggregation
`-regressionStdDevThreshold `
Integer
2
Standard deviation threshold for filtering
`-regressionOutlierStdDevThreshold `
Integer
4
Standard deviation threshold for outliers (ignored)
**Variable Dumping**
Argument
Type
Default
Description
`-dumpVariables`
Boolean
False
Dump variables to log for each CSV
`-dumpVariablesAll`
Boolean
False
Dump variables including metadata to log
`-dumpVariablesToJson `
String
Optional
Write variables to JSON file
`-dumpAllVariablesToJson `
String
Optional
Write variables including metadata to JSON
`-metadataProxy `
String
Optional
Use metadata proxy from XML instead of CSV
`-overrideMetadata `
String
Optional
Override/specify metadata (key=value format)
**JSON Serialization**
Argument
Type
Default
Description
`-summaryTableToJson `
String
Optional
Path to write summary table row data to JSON
`-summaryTableToJsonSeparateFiles`
Boolean
False
Write separate JSON files (path is directory)
`-summaryTableToJsonFastMode`
Boolean
False
Exit after serializing JSON (skip HTML tables)
`-summaryTableToJsonWriteAllElementData`
Boolean
False
Write all element data (tooltips, flags)
`-summaryTableToJsonMetadataOnly`
Boolean
False
Only write CsvMetadata elements
`-summaryTableToJsonFileStream`
Boolean
False
Use file stream for JSON (experimental, avoids OOM)
`-summaryTableToJsonNoIndent`
Boolean
False
Don’t indent JSON output
`-jsonToPrcs `
String
Optional
Convert JSON to PRC files (requires -summaryTableCache)
**Summary Table Caching (Bulk Mode Performance)**
Argument
Type
Default
Description
`-summaryTableCache `
String
Optional
Directory for caching summary table data
`-summaryTableCacheInvalidate`
Boolean
False
Regenerate (write-only) summary table cache entries
`-summaryTableCacheReadOnly`
Boolean
False
Only read from cache, never write
`-summaryTableCachePurgeInvalid`
Boolean
False
Purge invalid PRCs from cache folder
`-summaryTableCacheUseOnlyCsvID`
Boolean
False
Use only CSV ID (ignore report type hash) for cache
`-noCsvCacheFiles`
Boolean
False
Disable .csv.cache files
**CSV Precaching (Bulk Mode Performance)**
Argument
Type
Default
Description
`-precacheCount `
Integer
8
CSV files to precache in lookahead cache (0=disabled)
`-precacheThreads `
Integer
8
Threads for CSV lookahead cache
**Graph Generation (Performance)**
Argument
Type
Default
Description
`-perfLog`
Boolean
False
Output performance logging information
`-graphThreads `
Integer
PC core count/2
Threads per CsvToSVG instance
`-csvToSvgSequential`
Boolean
False
Run CsvToSvg sequentially (not multithreaded)
`-csvToSvgProcesses`
Boolean
False
**Deprecated**: Use separate processes instead of threads
`-embedGraphCommandline`
Boolean
False
**Deprecated**: Embed commandline in process output (with -csvToSvgProcesses)
`-noBatchedGraphs`
Boolean
False
**Deprecated**: Disable batched/multithreaded graph generation
**Link Configuration**
Argument
Type
Default
Description
`-reportLinkRootPath `
String
Optional
Make report links relative to this path
`-csvLinkRootPath `
String
Optional
Make CSV file links relative to this path
`-linkTemplates`
Boolean
False
Use template format for links (e.g., {{LinkTemplate:Report:}})
**External Metadata**
Argument
Type
Default
Description
`-externalMetadataSources `
String (list)
Optional
Paths for external metadata key=value files (supports template variables like {{platform}})
**Miscellaneous**
Argument
Type
Default
Description
`-listSummaryTables`
Boolean
False
List available summary tables from report XML
`-noWatermarks`
Boolean
False
Don’t embed commandline or version in reports
`-summaryTableJsData`
Boolean
False
Embed JavaScript row/column data in section
`-derivedStatVerboseErrors`
Boolean
False
Output verbose errors for derived stat expressions
`-extraLinksSummary`
Boolean
False
Add extra links summary (internal feature)
`-foremail `
String
Optional
Enable email output (internal feature)
I’ve created a more user-friendly version of the Perf Report Tool with the ability to compare multiple CSV files.
Performance Analyzer is available for download on Fab.