Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-11927] Swift compiler chokes when incrementally building one file out of many #54346

Closed
igor-makarov opened this issue Dec 8, 2019 · 18 comments
Assignees
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself

Comments

@igor-makarov
Copy link

Previous ID SR-11927
Radar rdar://problem/57824038
Original Reporter @igor-makarov
Type Bug
Status Resolved
Resolution Done

Attachment: Download

Additional Detail from JIRA
Votes 3
Component/s Compiler
Labels Bug
Assignee @CodaFi
Priority Medium

md5: d41f63cec90285b300786599bd81b1f9

is duplicated by:

  • SR-11944 Swift Frontend emits too many system framework dependencies
  • SR-11945 Swift frontend is too conservative when emitting dependencies

relates to:

  • SR-11944 Swift Frontend emits too many system framework dependencies
  • SR-11945 Swift frontend is too conservative when emitting dependencies

Issue Description:

When a target contains a large number of Swift source files, incremental builds get extremely slow. I suspect it's the driver that chokes on something.

Reproduction in the link below. The demo project has 3000 files, however it's very noticeable even in a 300 file target (which we actually have at work).

https://github.com/igor-makarov/DemoLargeNumberOfSwiftFiles

@beccadax
Copy link
Contributor

@swift-ci create

@swift-ci
Copy link
Collaborator

Comment by Michael Berg (JIRA)

We see the same issue for LOVOO. This step takes around 60s. We used Instruments to profile Xcode and it looks like all of the .d files in DerivedData are being parsed, even though only one swift file was compiled.

@CodaFi
Copy link
Member

CodaFi commented Dec 10, 2019

@swift-ci Create

@CodaFi
Copy link
Member

CodaFi commented Dec 11, 2019

Step one #28696

@CodaFi
Copy link
Member

CodaFi commented Dec 12, 2019

Step two #28702

@CodaFi
Copy link
Member

CodaFi commented Dec 12, 2019

Going to provide some context since I’ve duped a few related bugs here:

The Swift compiler is unique in that we provide our own miniature build system (the Swift driver) within the larger capital-B Build System (XCBuild). This means that tools like XCBuild need only be aware of the set of input files to a given invocation of the Swift driver so that it can re-invoke the driver to have it reschedule frontend build jobs.

This is in contrast to Clang, where the capital-B Build System is capable of scheduling individual cc1 frontend invocations, and it’s expected that you need these per-file make-style dependencies to support that functionality.

So there’s the disconnect: We’re emitting C-compiler-style dependencies assuming we’re in the old C-compiler-style world. In reality, the build system only needs enough information in the make-style dependencies file to know to re-invoke swiftc when any of the inputs have changed.

Practically, this means we need only emit a d file with a single target - with any Make-compatible name since llbuild ignores all targets anyways - that has all the build dependencies once per build session. This is already the behavior of swiftc in -wmo.

But there’s another bug here: we assume the build system needs to know the complete set of depenencies for every single output of a given frontend job. That’s a lot of build artifacts![]( A frontend job can produce a module, an object file, an ObjC header, a swiftinterface, swiftsourceinfo, oh my) Each of these gets its own target, and each target gets a complete copy of the build dependencies. So emitting a single deps file is step one, but emitting it with minimal duplication is step two.

@CodaFi
Copy link
Member

CodaFi commented Dec 12, 2019

What is unacceptable is not tracking system dependencies in this graph. Though it is unlikely that the average user will be changing their SDKs or system headers, it is not cool to lie to the build system.

@igor-makarov
Copy link
Author

What happens when a new version of the iOS SDK comes out? Can we assume it will get picked up by XCBuild independent of Swift and trigger a rebuild?

@CodaFi
Copy link
Member

CodaFi commented Dec 12, 2019

As external users, that would be delivered via an Xcode update and you would more than likely get a rebuild triggered anyhow.

@igor-makarov
Copy link
Author

Looks like the PR got reverted and new PRs were made:

#28743
#28748

Would love some comments on that if you could, please.

@igor-makarov
Copy link
Author

Also

#28758

@CodaFi
Copy link
Member

CodaFi commented Dec 13, 2019

We have settled on a cleaner solution in the short term that involves ignoring system dependencies in pre-built modules, and we're going to discuss a holistic longer-term fix that will be much better qualified than the solutions we have attempted to nominate against swift-5.1-branch.

@igor-makarov
Copy link
Author

So the short term solution is ignoring the system modules only? What about the multiplication of user files?

@CodaFi
Copy link
Member

CodaFi commented Dec 16, 2019

We will address the remaining issues with the more holistic fix. If we attempt to push out the fixes David and I have proposed in the states they are in, we would most assuredly destabilize the IDE and compiler.

@swift-ci
Copy link
Collaborator

Comment by Khaos Tian (JIRA)

Did some test (using snapshot org.swift.50201912261a) with the demo project, the improvement is pretty significant. The snapshot toolchain compiles the project 5x faster compared to the default toolchain...

With Xcode 11.3 default toolchain:

With Xcode 11.3 + snapshot org.swift.50201912261a:

@swift-ci
Copy link
Collaborator

Comment by Khaos Tian (JIRA)

And also discovered that the increased size of dependency file was kinda related to the other performance issue on system with lot of CPU cores (SR-11632). When running multiple jobs, depends on the number of files, the compiler ended up spending most of time waiting for IO... There is a 4x different in wall clock here. It might be nice to include #28931 as an option in Swift 5.2 in addition to having XCBuild and other build systems to improve dependency file handling...

Here are some data collected with

-driver-time-compilation -Xfrontend -debug-time-compilation

Xcode 11.3 Default Toolchain:

CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler (in target 'DemoLargeNumberOfSwiftFiles' from project 'DemoLargeNumberOfSwiftFiles') cd /Users/khaos/Downloads/DemoLargeNumberOfSwiftFiles-master export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -incremental -module-name DemoLargeNumberOfSwiftFiles -O -enable-batch-mode -enforce-exclusivity=checked @/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles.SwiftFileList -driver-time-compilation -Xfrontend -debug-time-compilation -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk -target x86_64-apple-ios12.1-simulator -g -module-cache-path /Users/khaos/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -swift-version 5 -I /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Products/Debug-iphonesimulator -F /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Products/Debug-iphonesimulator -c -j32 -output-file-map /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles-OutputFileMap.json -parseable-output -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles.swiftmodule -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-generated-files.hmap -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-own-target-headers.hmap -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-all-target-headers.hmap -Xcc -iquote -Xcc /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-project-headers.hmap -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Products/Debug-iphonesimulator/include -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DerivedSources-normal/x86_64 -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DerivedSources/x86_64 -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DerivedSources -Xcc -DDEBUG=1 -emit-objc-header -emit-objc-header-path /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles-Swift.h -working-directory /Users/khaos/Downloads/DemoLargeNumberOfSwiftFiles-master===-------------------------------------------------------------------------=== Driver Compilation Time ===-------------------------------------------------------------------------=== Total Execution Time: 10.4283 seconds (800.7806 wall clock) ---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name --- 0.1042 ( 1.4%) 0.0492 ( 1.6%) 0.1534 ( 1.5%) 8.1919 ( 1.0%) {compile: D0F137F00EBF4D628637B585379BB81B.o ACACD5EFBF18418B991617EBF002D6E8.o E66C6670D1D1448584AB42AFBEA3437D.o ... 22 more <= D0F137F00EBF4D628637B585379BB81B.swift ACACD5EFBF18418B991617EBF002D6E8.swift E66C6670D1D1448584AB42AFBEA3437D.swift ... 22 more} 0.0953 ( 1.3%) 0.0450 ( 1.4%) 0.1402 ( 1.3%) 8.1686 ( 1.0%) {compile: 6667BBEB4DB74C418690DB87B42A74CE.o BB489D9BB4384CF6AEC790A78EF74FB8.o CF4BCF243F564991969B806CBCCCBD8D.o ... 22 more <= 6667BBEB4DB74C418690DB87B42A74CE.swift BB489D9BB4384CF6AEC790A78EF74FB8.swift CF4BCF243F564991969B806CBCCCBD8D.swift ... 22 more} 0.0829 ( 1.1%) 0.0372 ( 1.2%) 0.1201 ( 1.2%) 8.1165 ( 1.0%) {compile: 1885802F5007473F94F182A9340CBF12.o 31B9C10DB3FC4C7FBF6D1FE4D630D4B5.o 4913F40B9D8A403AAB56491DEAE0DF3B.o ... 22 more <= 1885802F5007473F94F182A9340CBF12.swift 31B9C10DB3FC4C7FBF6D1FE4D630D4B5.swift 4913F40B9D8A403AAB56491DEAE0DF3B.swift ... 22 more} 0.0852 ( 1.2%) 0.0407 ... // Removed due to length limitation.
44A358AE3A3E43698AAFE2D031D7DB9B.swift ... 22 more} 0.0048 ( 0.1%) 0.0014 ( 0.0%) 0.0062 ( 0.1%) 0.6780 ( 0.1%) {merge-module: DemoLargeNumberOfSwiftFiles.swiftmodule <= 9BB2472F0B054BD9BEFDB345467FA28F.o EA165E7ED7D5442390A27D3DF0B08634.o EA6178930BDE4057A4B784676411B831.o ... 2998 more} 7.2862 (100.0%) 3.1421 (100.0%) 10.4283 (100.0%) 800.7806 (100.0%) Total

Xcode 11.3 + snapshot org.swift.50201912261a:

CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler (in target 'DemoLargeNumberOfSwiftFiles' from project 'DemoLargeNumberOfSwiftFiles') cd /Users/khaos/Downloads/DemoLargeNumberOfSwiftFiles-master export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk export TOOLCHAINS="org.swift.50201912261a " /Users/khaos/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2019-12-26-a.xctoolchain/usr/bin/swiftc -incremental -module-name DemoLargeNumberOfSwiftFiles -O -enable-batch-mode -enforce-exclusivity=checked @/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles.SwiftFileList -driver-time-compilation -Xfrontend -debug-time-compilation -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk -target x86_64-apple-ios12.1-simulator -g -module-cache-path /Users/khaos/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -swift-version 5 -I /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Products/Debug-iphonesimulator -F /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Products/Debug-iphonesimulator -c -j32 -output-file-map /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles-OutputFileMap.json -parseable-output -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles.swiftmodule -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-generated-files.hmap -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-own-target-headers.hmap -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-all-target-headers.hmap -Xcc -iquote -Xcc /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DemoLargeNumberOfSwiftFiles-project-headers.hmap -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Products/Debug-iphonesimulator/include -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DerivedSources-normal/x86_64 -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DerivedSources/x86_64 -Xcc -I/Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/DerivedSources -Xcc -DDEBUG=1 -emit-objc-header -emit-objc-header-path /Users/khaos/Library/Developer/Xcode/DerivedData/DemoLargeNumberOfSwiftFiles-eaomjfdctbxoabbzhrghjyoaykdt/Build/Intermediates.noindex/DemoLargeNumberOfSwiftFiles.build/Debug-iphonesimulator/DemoLargeNumberOfSwiftFiles.build/Objects-normal/x86_64/DemoLargeNumberOfSwiftFiles-Swift.h -Xcc -working-directory/Users/khaos/Downloads/DemoLargeNumberOfSwiftFiles-master===-------------------------------------------------------------------------=== Driver Compilation Time ===-------------------------------------------------------------------------=== Total Execution Time: 10.0101 seconds (187.3632 wall clock) ---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name --- 0.0885 ( 1.3%) 0.0358 ( 1.2%) 0.1242 ( 1.2%) 1.9134 ( 1.0%) {compile: 7FE38E7642D44672B1E24055C0729E13.o 44646152B00A46E9886E79C7AAC3B829.o 51017417582A42C782557EA067CC005E.o ... 22 more <= 7FE38E7642D44672B1E24055C0729E13.swift 44646152B00A46E9886E79C7AAC3B829.swift 51017417582A42C782557EA067CC005E.swift ... 22 more} 0.0868 ( 1.2%) 0.0349 ( 1.2%) 0.1216 ( 1.2%) 1.8980 ( 1.0%) {compile: 4EB01AF72538423DBDACD1A10E1543FD.o A3D8DAF159CB4B11BC8EB8FD75E9D33A.o 33D8A1D271494A7D9D551720BF64479A.o ... 22 more <= 4EB01AF72538423DBDACD1A10E1543FD.swift A3D8DAF159CB4B11BC8EB8FD75E9D33A.swift 33D8A1D271494A7D9D551720BF64479A.swift ... 22 more} 0.0722 ( 1.0%) 0.0271 ( 0.9%) 0.0993 ( 1.0%) 1.8812 ( 1.0%) {compile: 0399D968DA5D43CCA81931DF5865B73B.o F7DB0EEA2E884F45977BF3F8925CB53B.o 103FE4D8A31F4AFA821DB26123880107.o ... 22 more <= 0399D968DA5D43CCA81931DF5865B73B.swift F7DB0EEA2E884F45977BF3F8925CB53B.swift 103FE4D8A31F4AFA821DB26123880107.swift ... 22 more} 0.0799 ( 1.1%) 0.0303 ... // Removed due to length limitation.
( 0.2%) 0.0200 ( 0.2%) 0.8211 ( 0.4%) {compile: E9E2DF491F504BFD814132D683ADB6B6.o 5E15996F810D4A9C8ABA9297E865B6AE.o C8CF65D377784C4ABE28E716C987CC29.o ... 22 more <= E9E2DF491F504BFD814132D683ADB6B6.swift 5E15996F810D4A9C8ABA9297E865B6AE.swift C8CF65D377784C4ABE28E716C987CC29.swift ... 22 more} 0.0120 ( 0.2%) 0.0054 ( 0.2%) 0.0174 ( 0.2%) 0.8057 ( 0.4%) {compile: 1EA2C3BE29194CA2937856EC75FBBCAD.o 0FC3B5FACD884B77B6C5F744C8DC7A22.o 48923C6B51D24D73866B092133821281.o ... 22 more <= 1EA2C3BE29194CA2937856EC75FBBCAD.swift 0FC3B5FACD884B77B6C5F744C8DC7A22.swift 48923C6B51D24D73866B092133821281.swift ... 22 more} 0.0101 ( 0.1%) 0.0041 ( 0.1%) 0.0142 ( 0.1%) 0.7952 ( 0.4%) {compile: 2CC5B84E53FB461D9784EB7ED092078B.o 80130157570C4C759BD07EEFD4D5F4A4.o 07181163AADD42A98B2844DE2EA4FE53.o ... 22 more <= 2CC5B84E53FB461D9784EB7ED092078B.swift 80130157570C4C759BD07EEFD4D5F4A4.swift 07181163AADD42A98B2844DE2EA4FE53.swift ... 22 more} 0.0657 ( 0.9%) 0.0308 ( 1.0%) 0.0965 ( 1.0%) 0.7506 ( 0.4%) {compile: CCDF8877E5B14E63A87C18AC420ACB10.o 176BF35408664EF18407985E3D5E07E5.o 01B82747005B4887A217D89C4D0B024B.o ... 22 more <= CCDF8877E5B14E63A87C18AC420ACB10.swift 176BF35408664EF18407985E3D5E07E5.swift 01B82747005B4887A217D89C4D0B024B.swift ... 22 more} 0.0010 ( 0.0%) 0.0013 ( 0.0%) 0.0024 ( 0.0%) 0.3954 ( 0.2%) {compile: 9BB2472F0B054BD9BEFDB345467FA28F.o <= 9BB2472F0B054BD9BEFDB345467FA28F.swift} 7.0728 (100.0%) 2.9373 (100.0%) 10.0101 (100.0%) 187.3632 (100.0%) Total

@CodaFi
Copy link
Member

CodaFi commented Oct 2, 2020

I gave this a shot in Xcode 12 and also against the main branch with a development compiler and we've made some significant strides here. The size of the dependency files being emitted is still an issue, but swiftdeps files have been cut down by orders of magnitude, and private dependencies now ensure that incremental rebuilds take seconds instead of minutes. I encourage you to try again with a more modern toolchain and see if this issue still persists.

@igor-makarov
Copy link
Author

@CodaFi - thanks![]( It does seem to be working much faster in Xcode 12)

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself
Projects
None yet
Development

No branches or pull requests

4 participants