Add code so that the most common cases of climbing the iterator path, which don't climb at all, can be expressed in straightline code.
Details
Details
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
sys/vm/vm_page.c | ||
---|---|---|
1719 ↗ | (On Diff #146884) | Split off this change. It measurably improves _kmem_unback() and vm_object_page_remove(). Be consistent. Other vm_page_iter functions have the iterator as the first argument. |
Comment Actions
The timing results for 8-10 buildworlds, with and without this patch. Without:
57024.168u 1419.042s 1:03:49.95 1525.9% 79515+3176k 169306+34851io 126689pf+0w 57039.703u 1442.503s 1:03:49.49 1527.1% 79504+3175k 153034+33347io 107099pf+0w 57041.569u 1463.610s 1:03:55.62 1525.3% 79489+3176k 130076+34662io 105836pf+0w 57030.743u 1495.205s 1:03:54.53 1526.2% 79446+3175k 125633+33894io 105239pf+0w 57016.482u 1500.173s 1:03:53.79 1526.3% 79455+3175k 110310+34351io 104128pf+0w 57040.873u 1542.961s 1:03:52.14 1528.7% 79416+3173k 107332+34692io 103646pf+0w 57021.394u 1543.953s 1:03:55.56 1526.9% 79405+3173k 107087+34399io 103698pf+0w 57109.092u 1552.643s 1:04:01.27 1527.1% 79391+3175k 107063+34640io 103655pf+0w
With:
56952.301u 1415.111s 1:03:46.03 1525.5% 79524+3177k 168865+34681io 126696pf+0w 57053.860u 1459.616s 1:03:53.13 1526.5% 79482+3176k 107357+34862io 103619pf+0w 57016.362u 1495.152s 1:03:47.60 1528.6% 79453+3175k 107376+34101io 103653pf+0w 56975.541u 1496.806s 1:03:48.10 1527.4% 79461+3174k 107043+34267io 103669pf+0w 57117.010u 1553.774s 1:04:01.13 1527.4% 79400+3174k 107122+33958io 103620pf+0w 56995.638u 1557.533s 1:03:47.42 1529.8% 79386+3174k 107086+34102io 103608pf+0w 56986.002u 1553.172s 1:03:53.80 1526.9% 79398+3173k 107490+34045io 103665pf+0w 57069.189u 1549.260s 1:04:00.89 1526.1% 79402+3174k 107217+33986io 103660pf+0w 56998.231u 1548.065s 1:03:57.70 1525.5% 79404+3173k 107125+34297io 103682pf+0w 56979.664u 1549.411s 1:03:55.42 1526.0% 79409+3173k 107016+34173io 103619pf+0w