Skip to content

[FR] support any platform through user-provided functions #1231

@jdoubleu

Description

@jdoubleu

Is your feature request related to a problem? Please describe.
I'd like to use the benchmark suite in a restricted environment which differs from the currently supported platforms, like linux or windows. There might not be a steady clock provided through the libstdc++, nor are pthreads available but a compatibility layer and ultimately my platform exposes its own functions to measure CPU usage for example.

Describe the solution you'd like
I've seen there are already platform-specific switches in-place in some functions. I'd like to be able to provide my own implementations or fallbacks for some parts of the suite.

I could think of the following categories, where that would be useful, also including any errors I got:

  • output streams/console: The user could provide their own std::cout, console color detection, etc.
  • thread library: Since this is detected by CMake, there's not much you could to at compile-time.
  • timing functions: Provide your own ProcessCPUUsage, ThreadCPUUsage, etc.
  • cycle clock
  • system info: Like GetSystemName

Describe alternatives you've considered
I couldn't really think of any, yet. Maybe I need to write a linux compatible layer, so that the suite would use the linux API, which internally translate all calls according to my platform, but that is quite the undergoing.

Additional context
I acknowledge that my request is an bedge-case. However, I think, that by making it possible to provide user-defined fallbacks for all sorts of functionality of the suite, makes it more attractive for other platform and improves its compatibility.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions