Fangrui Song
3b4d800911
[ELF] Parallelize writes of different OutputSections
...
We currently process one OutputSection at a time and for each OutputSection
write contained input sections in parallel. This strategy does not leverage
multi-threading well. Instead, parallelize writes of different OutputSections.
The default TaskSize for parallelFor often leads to inferior sharding. We
prepare the task in the caller instead.
* Move llvm::parallel::detail::TaskGroup to llvm::parallel::TaskGroup
* Add llvm::parallel::TaskGroup::execute.
* Change writeSections to declare TaskGroup and pass it to writeTo.
Speed-up with --threads=8:
* clang -DCMAKE_BUILD_TYPE=Release: 1.11x as fast
* clang -DCMAKE_BUILD_TYPE=Debug: 1.10x as fast
* chrome -DCMAKE_BUILD_TYPE=Release: 1.04x as fast
* scylladb build/release: 1.09x as fast
On M1, many benchmarks are a small fraction of a percentage faster. Mozilla showed the largest difference with the patch being about 1.03x as fast.
Differential Revision: https://reviews.llvm.org/D131247
2022-08-24 09:40:03 -07:00
..
2022-05-13 11:53:03 -07:00
2020-03-19 19:11:11 -07:00
2019-04-20 10:50:27 +00:00
2020-03-15 17:48:36 -07:00
2020-04-02 01:21:36 +09:00
2020-03-15 17:48:36 -07:00
2020-03-15 17:48:36 -07:00
2020-03-19 19:11:11 -07:00
2019-03-15 01:29:57 +00:00
2018-03-01 01:19:12 +00:00
2020-03-04 10:48:36 -08:00
2018-03-01 01:19:12 +00:00
2020-01-06 10:25:48 -08:00
2021-07-16 10:02:47 -07:00
2021-07-16 10:02:47 -07:00
2021-07-16 10:02:47 -07:00
2021-07-16 10:02:47 -07:00
2022-05-18 00:00:14 +00:00
2020-02-12 21:54:50 -08:00
2022-03-28 11:05:52 -07:00
2020-08-06 08:27:15 -07:00
2020-02-19 22:01:42 -08:00
2020-03-15 17:48:36 -07:00
2022-05-06 07:49:42 -07:00
2018-03-01 04:21:42 +00:00
2022-05-04 01:10:46 -07:00
2020-07-28 21:18:01 +01:00
2021-03-11 09:34:36 -08:00
2021-03-11 09:34:36 -08:00
2021-03-11 09:34:36 -08:00
2022-01-12 12:43:49 -08:00
2021-11-19 10:50:53 -08:00
2022-04-20 22:49:49 -07:00
2022-04-20 22:49:49 -07:00
2019-09-26 17:10:09 +00:00
2020-03-15 17:48:36 -07:00
2019-05-01 05:49:01 +00:00
2022-06-25 12:19:45 -07:00
2020-11-12 08:53:11 -08:00
2020-03-04 10:48:36 -08:00
2022-05-13 12:02:14 -07:00
2017-07-14 08:10:45 +00:00
2022-05-13 11:53:03 -07:00
2019-05-01 06:02:16 +00:00
2021-10-21 11:38:39 +07:00
2017-09-11 15:55:54 +00:00
2020-03-15 17:48:36 -07:00
2022-02-01 10:16:12 -08:00
2022-02-01 10:19:30 -08:00
2020-02-12 21:54:50 -08:00
2021-06-13 12:41:11 -07:00
2021-06-30 11:35:50 -07:00
2020-02-12 21:54:50 -08:00
2020-02-12 21:54:50 -08:00
2021-11-19 11:27:21 +01:00
2020-04-01 08:19:06 -07:00
2018-12-06 09:04:52 +00:00
2018-07-02 17:48:23 +00:00
2020-03-23 10:30:06 -07:00
2021-11-24 12:17:09 +07:00
2020-02-12 21:54:50 -08:00
2021-09-25 11:57:54 -07:00
2019-08-09 01:25:49 +00:00
2020-03-15 17:48:36 -07:00
2021-07-16 10:02:47 -07:00
2021-11-15 15:59:39 +07:00
2021-07-16 10:02:47 -07:00
2019-05-13 16:01:26 +00:00
2022-05-13 11:06:01 -07:00
2021-06-16 12:36:45 +02:00
2022-05-06 07:49:42 -07:00
2020-08-25 13:05:17 +03:00
2020-03-19 19:11:11 -07:00
2019-05-01 05:49:01 +00:00
2022-07-24 11:20:49 -07:00
2021-07-16 10:02:47 -07:00
2021-11-11 15:07:38 +07:00
2021-10-21 11:38:39 +07:00
2020-03-15 17:48:36 -07:00
2022-08-24 09:40:03 -07:00
2021-06-13 12:41:11 -07:00
2021-08-16 19:23:11 -07:00
2022-01-12 11:32:31 -08:00
2021-12-23 11:32:44 -08:00
2021-11-19 11:45:58 +00:00
2020-03-19 19:11:11 -07:00
2020-03-11 09:35:42 -07:00
2019-05-01 05:49:01 +00:00
2020-03-15 17:48:36 -07:00
2021-04-16 12:18:46 -07:00
2020-03-19 19:11:11 -07:00
2020-08-18 09:03:01 -07:00
2020-03-19 12:49:25 +03:00
2018-06-26 22:13:32 +00:00
2020-08-18 09:03:01 -07:00
2017-08-23 18:44:34 +00:00
2018-03-13 16:02:45 +00:00
2020-03-15 17:48:36 -07:00
2019-03-14 03:47:45 +00:00
2022-06-25 21:11:32 -07:00
2021-10-31 12:10:43 -07:00
2021-09-27 09:50:42 -07:00
2022-01-28 22:21:13 -08:00
2021-07-25 16:26:37 -07:00
2022-06-25 20:26:47 -07:00
2022-06-25 12:31:20 -07:00
2021-08-04 08:58:50 -07:00
2021-07-29 15:14:00 +01:00
2019-05-01 06:02:16 +00:00
2020-02-12 21:54:50 -08:00