Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
b8fbe78d
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b8fbe78d
编写于
4月 12, 2016
作者:
B
Balaji Soundrarajan
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #10468 from basoundr/fixCPC
Fix CPC
上级
a9d3a76d
96e74257
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
84 addition
and
62 deletion
+84
-62
src/Test/Perf/infra/automation.csx
src/Test/Perf/infra/automation.csx
+0
-3
src/Test/Perf/runner.csx
src/Test/Perf/runner.csx
+19
-33
src/Test/Perf/tests/csharp/csharp_compiler.csx
src/Test/Perf/tests/csharp/csharp_compiler.csx
+2
-2
src/Test/Perf/tests/helloworld/hello_world.csx
src/Test/Perf/tests/helloworld/hello_world.csx
+2
-2
src/Test/Perf/util/scenario_generator_util.csx
src/Test/Perf/util/scenario_generator_util.csx
+0
-1
src/Test/Perf/util/tools_util.csx
src/Test/Perf/util/tools_util.csx
+16
-5
src/Test/Perf/util/trace_manager_util.csx
src/Test/Perf/util/trace_manager_util.csx
+45
-16
未找到文件。
src/Test/Perf/infra/automation.csx
浏览文件 @
b8fbe78d
...
...
@@ -14,8 +14,5 @@ ShellOutVital(Path.Combine(directoryUtil.RoslynDirectory, "Restore.cmd"), "", wo
// Build Roslyn in Release Mode
ShellOutVital("msbuild", "./Roslyn.sln /p:Configuration=Release", workingDirectory: directoryUtil.RoslynDirectory);
// Run DownloadTools before using the TraceManager because TraceManager uses the downloaded CPC binaries
DownloadTools();
// Run run_and_report.csx
await RunFile(Path.Combine(directoryUtil.MyWorkingDirectory, "run_and_report.csx"));
src/Test/Perf/runner.csx
浏览文件 @
b8fbe78d
...
...
@@ -9,7 +9,7 @@ using System.IO;
using System;
var directoryInfo = new RelativeDirectory();
var testDirectory = Path.Combine(directoryInfo.MyWorkingDirectory, "
T
ests");
var testDirectory = Path.Combine(directoryInfo.MyWorkingDirectory, "
t
ests");
// Print message at startup
Log("Starting Performance Test Run");
...
...
@@ -29,45 +29,31 @@ foreach (var script in GetAllCsxRecursive(testDirectory))
}
var traceManager = TraceManagerFactory.GetTraceManager();
traceManager.Setup();
for (int i = 0; i < traceManager.Iterations; i++)
{
traceManager.Start();
foreach (dynamic test in testInstances)
{
test.Setup();
traceManager.StartScenario(test.Name, test.MeasuredProc);
traceManager.StartEvent();
test.Test();
traceManager.EndEvent();
traceManager.EndScenario();
}
traceManager.EndScenarios();
traceManager.WriteScenariosFileToDisk();
traceManager.Stop();
traceManager.ResetScenarioGenerator();
}
traceManager.Cleanup();
/*
var traceManager = TraceManagerFactory.GetTraceManager();
traceManager.Setup();
// Run each of the tests
foreach (dynamic test in testInstances)
traceManager.Initialize();
foreach (dynamic test in testInstances)
{
test.Setup();
traceManager.Start();
for (int i = 0; i < test.Iterations; i++)
traceManager.Setup();
var iterations = traceManager.HasWarmUpIteration ?
test.Iterations + 1 :
test.Iterations;
for (int i = 0; i < iterations; i++)
{
traceManager.StartScenario("temp" + i, "csc");
traceManager.StartScenarios();
traceManager.Start();
traceManager.StartScenario(test.Name + i, test.MeasuredProc);
traceManager.StartEvent();
test.Test();
traceManager.EndEvent();
traceManager.EndScenario();
traceManager.EndScenarios();
traceManager.WriteScenariosFileToDisk();
traceManager.Stop();
traceManager.ResetScenarioGenerator();
}
traceManager.EndScenarios();
traceManager.WriteScenariosFileToDisk();
traceManager.Stop();
traceManager.Cleanup();
}
*/
src/Test/Perf/tests/csharp/csharp_compiler.csx
浏览文件 @
b8fbe78d
...
...
@@ -27,9 +27,9 @@ class CSharpCompilerTest: PerfTest
ShellOutVital(ReleaseCscPath, args, executeInDirectory);
}
public override int Iterations =>
1
;
public override int Iterations =>
2
;
public override string Name => "csharp " + _rspFile;
public override string MeasuredProc => "csc
.exe
";
public override string MeasuredProc => "csc";
}
TestThisPlease(
...
...
src/Test/Perf/tests/helloworld/hello_world.csx
浏览文件 @
b8fbe78d
...
...
@@ -21,9 +21,9 @@ class HelloWorldTest: PerfTest
ShellOutVital(ReleaseCscPath, _pathToHelloWorld + " /out:" + _pathToOutput);
}
public override int Iterations =>
1
;
public override int Iterations =>
2
;
public override string Name => "hello world";
public override string MeasuredProc => "csc
.exe
";
public override string MeasuredProc => "csc";
}
TestThisPlease(new HelloWorldTest());
src/Test/Perf/util/scenario_generator_util.csx
浏览文件 @
b8fbe78d
...
...
@@ -26,7 +26,6 @@ public class ScenarioGenerator
}
_buffer = new List<string>();
AddScenariosFileStart();
}
public void AddScenariosFileStart()
...
...
src/Test/Perf/util/tools_util.csx
浏览文件 @
b8fbe78d
...
...
@@ -31,6 +31,7 @@ bool ConvertConsumptionToCsv(string source, string destination, string requiredM
if (xmlReader.Name.Equals("ScenarioResult"))
{
currentScenarioName = xmlReader.GetAttribute("Name");
currentScenarioName = new string(currentScenarioName.TakeWhile(c => !Char.IsDigit(c)).ToArray());
// These are not test results
if (string.Equals(currentScenarioName, "..TestDiagnostics.."))
...
...
@@ -132,16 +133,26 @@ void UploadTraces(string sourceFolderPath, string destinationFolderPath)
Log("Uploading traces");
if (Directory.Exists(sourceFolderPath))
{
// Get the latest written databackup
var directoryToUpload = new DirectoryInfo(sourceFolderPath).GetDirectories("DataBackup*").OrderByDescending(d=>d.LastWriteTimeUtc).FirstOrDefault();
if (directoryToUpload == null)
var directoriesToUpload = new DirectoryInfo(sourceFolderPath).GetDirectories("DataBackup*");
if (directoriesToUpload.Count() == 0)
{
Log($"There are no trace directory starting with DataBackup in {sourceFolderPath}");
return;
}
var destination = Path.Combine(destinationFolderPath, directoryToUpload.Name);
CopyDirectory(directoryToUpload.FullName, destination);
var perfResultDestinationFolderName = string.Format("PerfResults-{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now);
var destination = Path.Combine(destinationFolderPath, perfResultDestinationFolderName);
foreach (var directoryToUpload in directoriesToUpload)
{
var destinationDataBackupDirectory = Path.Combine(destination, directoryToUpload.Name);
if (Directory.Exists(destinationDataBackupDirectory))
{
Directory.CreateDirectory(destinationDataBackupDirectory);
}
CopyDirectory(directoryToUpload.FullName, destinationDataBackupDirectory);
}
foreach(var file in new DirectoryInfo(sourceFolderPath).GetFiles().Where(f => f.Name.StartsWith("ConsumptionTemp", StringComparison.OrdinalIgnoreCase) || f.Name.StartsWith("Roslyn-", StringComparison.OrdinalIgnoreCase)))
{
...
...
src/Test/Perf/util/trace_manager_util.csx
浏览文件 @
b8fbe78d
...
...
@@ -7,8 +7,9 @@ using System.IO;
interface ITraceManager
{
int Iterations
{ get; }
bool HasWarmUpIteration
{ get; }
void Initialize();
void Cleanup();
void EndEvent();
void EndScenario();
...
...
@@ -18,24 +19,25 @@ interface ITraceManager
void Start();
void StartEvent();
void StartScenario(string scenarioName, string processName);
void StartScenarios();
void Stop();
void WriteScenariosFileToDisk();
}
class TraceManagerFactory
{
public static ITraceManager GetTraceManager(
int iterations = 1
)
public static ITraceManager GetTraceManager()
{
var directoryInfo = new RelativeDirectory();
var cpcFullPath = Path.Combine(directoryInfo.CPCDirectoryPath, "CPC.exe");
var scenarioPath = directoryInfo.CPCDirectoryPath;
if (File.Exists(cpcFullPath))
{
return new TraceManager(
iterations,
cpcFullPath, scenarioPath);
return new TraceManager(cpcFullPath, scenarioPath);
}
else
{
return new NoOpTraceManager(
iterations
);
return new NoOpTraceManager();
}
}
}
...
...
@@ -44,18 +46,20 @@ class TraceManagerFactory
/// All operations are NoOp
class NoOpTraceManager : ITraceManager
{
private readonly int _iterations;
public NoOpTraceManager(int iterations)
public NoOpTraceManager()
{
_iterations = iterations;
}
public
int Iterations
public
bool HasWarmUpIteration
{
get
{
return _iterations;
}
return false;
}
}
public void Initialize()
{
}
public void Cleanup()
...
...
@@ -90,6 +94,10 @@ class NoOpTraceManager : ITraceManager
{
}
public void StartScenarios()
{
}
public void StartScenario(string scenarioName, string processName)
{
}
...
...
@@ -106,7 +114,6 @@ class NoOpTraceManager : ITraceManager
class TraceManager: ITraceManager
{
private readonly ScenarioGenerator _scenarioGenerator;
private readonly int _iterations;
private readonly string _cpcPath;
private RelativeDirectory _directoryInfo = new RelativeDirectory();
...
...
@@ -115,20 +122,37 @@ class TraceManager: ITraceManager
private int _stopEventAbsoluteInstance = 1;
public TraceManager(
int iterations,
string cpcPath,
string scenarioPath): base()
{
_iterations = iterations;
_cpcPath = cpcPath;
_scenarioGenerator = new ScenarioGenerator(scenarioPath);
}
public
int Iterations
public
bool HasWarmUpIteration
{
get
{
return _iterations;
return true;
}
}
// Cleanup the results directory and files before every run
public void Initialize()
{
var consumptionTempResultsPath = Path.Combine(_directoryInfo.CPCDirectoryPath, "ConsumptionTempResults.xml");
if (File.Exists(consumptionTempResultsPath))
{
File.Delete(consumptionTempResultsPath);
}
if (Directory.Exists(_directoryInfo.CPCDirectoryPath))
{
var databackDirectories = Directory.GetDirectories(_directoryInfo.CPCDirectoryPath, "DataBackup*", SearchOption.AllDirectories);
foreach (var databackDirectory in databackDirectories)
{
Directory.Delete(databackDirectory, true);
}
}
}
...
...
@@ -145,7 +169,7 @@ class TraceManager: ITraceManager
public void Stop()
{
var scenariosXmlPath = Path.Combine(_directoryInfo.CPCDirectoryPath, "scenarios.xml");
var consumptionTempResultsPath = Path.Combine(_directoryInfo.CPCDirectoryPath, "ConsumptionTempResults
Path
.xml");
var consumptionTempResultsPath = Path.Combine(_directoryInfo.CPCDirectoryPath, "ConsumptionTempResults.xml");
ShellOutVital(_cpcPath, $"/Stop /DisableArchive /ScenarioPath=\"{scenariosXmlPath}\" /ConsumptionTempResultsPath=\"{consumptionTempResultsPath}\"");
}
...
...
@@ -153,6 +177,11 @@ class TraceManager: ITraceManager
{
ShellOutVital(_cpcPath, "/Cleanup /DisableArchive");
}
public void StartScenarios()
{
_scenarioGenerator.AddScenariosFileStart();
}
public void StartScenario(string scenarioName, string processName)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录