Skip to content

Conversation

@firewave
Copy link
Collaborator

The cleanups without the SmallVector usage somehow cause a performance regression I still need to look into.

@firewave
Copy link
Collaborator Author

The cleanups actually improve the performance from 80,458,208,346 to 80,430,759,717 in the proposed step from #4171.

@firewave
Copy link
Collaborator Author

firewave commented Sep 27, 2022

And simply using SmallVector without Boost reduces it from 80,430,759,717 to 80,152,494,488. Some changes necessary to make it compile (it doesn't like the initializer lists anymore) make it no longer use ReferenceToken* std::__uninitialized_copy<>::__uninit_copy<>(ReferenceToken const*, ReferenceToken const*, ReferenceToken*) (cppcheck: stl_uninitialized.h, ...).

@firewave
Copy link
Collaborator Author

firewave commented Sep 27, 2022

Using Boost it reduces from 80,152,494,488 to 79,232,522,651.

Better numbers for both compilers soon.

@firewave
Copy link
Collaborator Author

This is finally ready for review. 🥳

current -> SmallVector -> SmallVector + Boost 1.74

Performing a --enable=all --inconclusive scan on mame_regtest.

With DISABLE_VALUEFLOW=1:

Clang 14 2,026,151,486 -> 2,020,278,735 -> 1,999,090,088
GCC 12 1,994,489,219 -> 1,985,524,671 -> 1,964,385,704

With Valueflow enabled:

Clang 14 51,130,767,151 -> 51,083,225,640 -> 50,940,612,547
GCC 12 54,989,579,042 -> 54,923,205,508 -> 54,760,703,625

And scanning cli with --enable=all --inconclusive -Ilib -D __GNUC__ and DISABLE_VALUEFLOW=1

Clang 14 2,935,467,131 -> 2,922,870,135 -> 2,889,963,287
GCC 12 3,009,733,699 -> 2,995,173,269 -> 2,961,009,395

@firewave firewave marked this pull request as ready for review September 28, 2022 11:15
@danmar danmar merged commit 0481edf into danmar:main Sep 29, 2022
@firewave firewave deleted the smallvector-3 branch September 29, 2022 20:44
@firewave
Copy link
Collaborator Author

There's still a lot of Ir being used by the SmallVector. It is hard to tell from which code it is actually coming from though.

@firewave
Copy link
Collaborator Author

There's still a lot of Ir being used by the SmallVector. It is hard to tell from which code it is actually coming from though.

This is addressed in #4526.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants