[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:
Guillaume Chatelet 2020-10-15 08:01:26 +00:00
parent 400103f3d5
commit c400e01c62
3 changed files with 109 additions and 0 deletions

View file

@ -111,6 +111,8 @@ add_library(libc-memory-benchmark
EXCLUDE_FROM_ALL
LibcMemoryBenchmark.cpp
LibcMemoryBenchmark.h
MemorySizeDistributions.cpp
MemorySizeDistributions.h
)
target_link_libraries(libc-memory-benchmark PUBLIC libc-benchmark)
fix_rtti(libc-memory-benchmark)

File diff suppressed because one or more lines are too long

View 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