llvm-project/libc/benchmarks/MemorySizeDistributions.h
Guillaume Chatelet c400e01c62 [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
2020-10-15 08:15:58 +00:00

45 lines
1.6 KiB
C++

//===-- 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