Skip to content

Commit 2d20bd8

Browse files
Bring back parallel processing
1 parent 8640421 commit 2d20bd8

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

Sources/SwiftAstGenLib/SwiftAstGenerator.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ public class SwiftAstGenerator {
55
private var srcDir: URL
66
private var outputDir: URL
77
private var prettyPrint: Bool
8+
private let availableProcessors = ProcessInfo.processInfo.activeProcessorCount
89

910
public init(srcDir: URL, outputDir: URL, prettyPrint: Bool) throws {
1011
self.srcDir = srcDir
@@ -63,6 +64,11 @@ public class SwiftAstGenerator {
6364
}
6465

6566
private func iterateSwiftFiles(at url: URL) {
67+
let queue = OperationQueue()
68+
queue.name = "io.joern.swiftastgen.iteratequeue"
69+
queue.qualityOfService = .userInitiated
70+
queue.maxConcurrentOperationCount = availableProcessors
71+
6672
if let enumerator = FileManager.default.enumerator(
6773
at: url,
6874
includingPropertiesForKeys: [.isRegularFileKey],
@@ -72,11 +78,14 @@ public class SwiftAstGenerator {
7278
if fileAttributes.isRegularFile! && fileURL.pathExtension == "swift" {
7379
let relativeFilePath = fileURL.relativePath(from: srcDir)!
7480
if !ignoreDirectory(name: "/\(relativeFilePath)") {
75-
self.parseFile(fileUrl: fileURL)
81+
queue.addOperation {
82+
self.parseFile(fileUrl: fileURL)
83+
}
7684
}
7785
}
7886
}
7987
}
88+
queue.waitUntilAllOperationsAreFinished()
8089
}
8190

8291
public func generate() throws {

0 commit comments

Comments
 (0)