@@ -6,8 +6,8 @@ import XCTest
6
6
import TSCBasic
7
7
import TSCUtility
8
8
9
- class CleanBuildPerformanceTests : XCTestCase {
10
- enum WhatToMeasure { case reading , writing }
9
+ class IncrementalBuildPerformanceTests : XCTestCase {
10
+ enum WhatToMeasure { case readingSwiftDeps , writing, readingPriors }
11
11
12
12
/// Test the cost of reading `swiftdeps` files without doing a full build. Use the files in "TestInputs/SampleSwiftDeps"
13
13
///
@@ -22,14 +22,17 @@ class CleanBuildPerformanceTests: XCTestCase {
22
22
/// `cd` to the package directory, then:
23
23
/// `rm TestInputs/SampleSwiftDeps/*; rm -rf .build; swift build; find .build -name \*.swiftdeps -a -exec cp \{\} TestInputs/SampleSwiftDeps \;`
24
24
func testCleanBuildSwiftDepsPerformance( ) throws {
25
- try testCleanBuildPerformance ( . reading )
25
+ try testPerformance ( . readingSwiftDeps )
26
26
}
27
- func testCleanBuildSavingPriorsPerformance( ) throws {
28
- try testCleanBuildPerformance ( . writing)
27
+ func testSavingPriorsPerformance( ) throws {
28
+ try testPerformance ( . writing)
29
+ }
30
+ func testReadingPriorsPerformance( ) throws {
31
+ try testPerformance ( . readingPriors)
29
32
}
30
33
31
34
32
- func testCleanBuildPerformance ( _ whatToMeasure: WhatToMeasure ) throws {
35
+ func testPerformance ( _ whatToMeasure: WhatToMeasure ) throws {
33
36
34
37
#if !os(macOS)
35
38
// rdar://81411914
@@ -67,16 +70,25 @@ class CleanBuildPerformanceTests: XCTestCase {
67
70
. mock ( options: [ ] , outputFileMap: outputFileMap)
68
71
let g = ModuleDependencyGraph ( info, . updatingAfterCompilation)
69
72
switch whatToMeasure {
70
- case . reading :
73
+ case . readingSwiftDeps :
71
74
measure { readSwiftDeps ( for: inputs, into: g) }
72
75
case . writing:
73
76
readSwiftDeps ( for: inputs, into: g)
74
77
measure {
75
- ModuleDependencyGraph . Serializer. serialize (
78
+ _ = ModuleDependencyGraph . Serializer. serialize (
76
79
g,
77
80
" mock compiler version " ,
78
81
ModuleDependencyGraph . serializedGraphVersion)
79
82
}
83
+ case . readingPriors:
84
+ readSwiftDeps ( for: inputs, into: g)
85
+ let data = ModuleDependencyGraph . Serializer. serialize (
86
+ g,
87
+ " mock compiler version " ,
88
+ ModuleDependencyGraph . serializedGraphVersion)
89
+ measure {
90
+ try ? XCTAssertNoThrow ( ModuleDependencyGraph . deserialize ( data, info: info) )
91
+ }
80
92
}
81
93
}
82
94
0 commit comments