Added documentation about performance measurement (#2719)
This commit is contained in:
+57
-1
@@ -92,4 +92,60 @@ To update the blackbox compiler tests set TeamCity build number in `gradle.prope
|
|||||||
|
|
||||||
* **-Ptest_verbose** enables printing compiler args and other helpful information during a test execution.
|
* **-Ptest_verbose** enables printing compiler args and other helpful information during a test execution.
|
||||||
|
|
||||||
./gradlew -Ptest_verbose :backend.native:tests:mpp_optional_expectation
|
./gradlew -Ptest_verbose :backend.native:tests:mpp_optional_expectation
|
||||||
|
|
||||||
|
## Performance measurement
|
||||||
|
|
||||||
|
Firstly, it's necessary to build analyzer tool to have opportunity to compare different performance results:
|
||||||
|
|
||||||
|
cd tools/benchmarksAnalyzer
|
||||||
|
../../gradlew build
|
||||||
|
|
||||||
|
To measure performance of Kotlin/Native compiler on existing benchmarks:
|
||||||
|
|
||||||
|
cd performance
|
||||||
|
../gradlew konanRun
|
||||||
|
|
||||||
|
**konanRun** task can be run separately for one/several benchmark applications:
|
||||||
|
|
||||||
|
../gradlew :cinterop:konanRun
|
||||||
|
|
||||||
|
**konanRun** task has parameter `filter` which allows to run only some subset of benchmarks :
|
||||||
|
|
||||||
|
../gradlew :cinterop:konanRun --filter=struct,macros
|
||||||
|
|
||||||
|
There are also tasks for running benchmarks on JVM (pay attention, some benchmarks e.g. cinterop benchmarks can't be run on JVM)
|
||||||
|
|
||||||
|
../gradlew jvmRun
|
||||||
|
|
||||||
|
Files with results of benchmarks run are saved in `performance/build`. **nativeReport.json** - for konanRun and **jvmReport.json** for jvmRun.
|
||||||
|
|
||||||
|
To compare different results run benchmarksAnalyzer tool:
|
||||||
|
|
||||||
|
cd tools/benchmarksAnalyzer/build/bin/<target>/benchmarksAnalyzerReleaseExecutable/
|
||||||
|
./benchmarksAnalyzer.kexe <file1> <file2>
|
||||||
|
|
||||||
|
Tool has several renders which allow produce output report in different forms (text, html, etc.). To set up render use flag `-render/-r`.
|
||||||
|
Output can be redirected to file with flag `-output/-o`.
|
||||||
|
To get detailed information about supported options, please use `-help/-h`.
|
||||||
|
|
||||||
|
Analyzer tool can compare both local files and files placed on Bintray/TeamCity.
|
||||||
|
|
||||||
|
File description stored on Bintray
|
||||||
|
|
||||||
|
bintray:<build number>:<target (Linux|Windows10|MacOSX)>:<filename>
|
||||||
|
|
||||||
|
Example
|
||||||
|
|
||||||
|
bintray:1.2-dev-7942:Windows10:nativeReport.json
|
||||||
|
|
||||||
|
File description stored on TeamCity
|
||||||
|
|
||||||
|
teamcity:<build locator>:<filename>
|
||||||
|
|
||||||
|
Example
|
||||||
|
|
||||||
|
teamcity:id:42491947:nativeReport.json
|
||||||
|
|
||||||
|
Pay attention, user and password information(with flag `-u <username>:<password>`) should be provided to get data from TeamCity.
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ object TeamCityConnector: Connector() {
|
|||||||
val fileName = fileDescription.substringAfterLast(':')
|
val fileName = fileDescription.substringAfterLast(':')
|
||||||
if (fileDescription == fileLocation ||
|
if (fileDescription == fileLocation ||
|
||||||
fileDescription == buildLocator || fileName == fileDescription) {
|
fileDescription == buildLocator || fileName == fileDescription) {
|
||||||
error("To get file from bintray, please, specify, build number from TeamCity and target" +
|
error("To get file from TeamCity, please, specify, build locator and filename on TeamCity" +
|
||||||
" in format teamcity:build_locator:filename")
|
" in format teamcity:build_locator:filename")
|
||||||
}
|
}
|
||||||
val accessFileUrl = "$teamCityUrl/app/rest/builds/$buildLocator/artifacts/content/$fileName"
|
val accessFileUrl = "$teamCityUrl/app/rest/builds/$buildLocator/artifacts/content/$fileName"
|
||||||
|
|||||||
Reference in New Issue
Block a user