[libc][NFC] Add probability distributions for memory function sizes
This patch adds memory function size distributions sampled from different applications running in production. This will be used to benchmark and compare memory functions implementations. Differential Revision: https://reviews.llvm.org/D89401
This commit is contained in:
parent
400103f3d5
commit
c400e01c62
|
@ -111,6 +111,8 @@ add_library(libc-memory-benchmark
|
||||||
EXCLUDE_FROM_ALL
|
EXCLUDE_FROM_ALL
|
||||||
LibcMemoryBenchmark.cpp
|
LibcMemoryBenchmark.cpp
|
||||||
LibcMemoryBenchmark.h
|
LibcMemoryBenchmark.h
|
||||||
|
MemorySizeDistributions.cpp
|
||||||
|
MemorySizeDistributions.h
|
||||||
)
|
)
|
||||||
target_link_libraries(libc-memory-benchmark PUBLIC libc-benchmark)
|
target_link_libraries(libc-memory-benchmark PUBLIC libc-benchmark)
|
||||||
fix_rtti(libc-memory-benchmark)
|
fix_rtti(libc-memory-benchmark)
|
||||||
|
|
63
libc/benchmarks/MemorySizeDistributions.cpp
Normal file
63
libc/benchmarks/MemorySizeDistributions.cpp
Normal file
File diff suppressed because one or more lines are too long
44
libc/benchmarks/MemorySizeDistributions.h
Normal file
44
libc/benchmarks/MemorySizeDistributions.h
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
//===-- MemorySizeDistributions ---------------------------------*- C++ -*-===//
|
||||||
|
//
|
||||||
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||||
|
// See https://llvm.org/LICENSE.txt for license information.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
//
|
||||||
|
// Memory functions operate on buffers of certain sizes. This file provides
|
||||||
|
// probability distributions observed at runtime for a set of applications.
|
||||||
|
// These distributions are used to benchmark and compare memory functions
|
||||||
|
// implementations.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#ifndef LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H
|
||||||
|
#define LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H
|
||||||
|
|
||||||
|
#include <llvm/ADT/ArrayRef.h>
|
||||||
|
#include <llvm/ADT/StringRef.h>
|
||||||
|
|
||||||
|
namespace llvm {
|
||||||
|
namespace libc_benchmarks {
|
||||||
|
|
||||||
|
/// A simple POD exposing caracteristics of a memory function size
|
||||||
|
/// distributions. The underlying data is immutable.
|
||||||
|
struct MemorySizeDistribution {
|
||||||
|
StringRef Name; // The name of the distribution.
|
||||||
|
ArrayRef<double> Probabilities; // Size indexed array of probabilities.
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Returns a list of memcpy size distributions.
|
||||||
|
ArrayRef<MemorySizeDistribution> getMemcpySizeDistributions();
|
||||||
|
|
||||||
|
/// Returns a list of memset size distributions.
|
||||||
|
ArrayRef<MemorySizeDistribution> getMemsetSizeDistributions();
|
||||||
|
|
||||||
|
/// Returns a list of memcmp size distributions.
|
||||||
|
ArrayRef<MemorySizeDistribution> getMemcmpSizeDistributions();
|
||||||
|
|
||||||
|
} // namespace libc_benchmarks
|
||||||
|
} // namespace llvm
|
||||||
|
|
||||||
|
#endif // LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H
|
Loading…
Reference in a new issue