Teuchos - Trilinos Tools Package
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
Teuchos_Details_Allocator.cpp
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Teuchos: Common Tools Package
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#include <
Teuchos_Details_Allocator.hpp
>
43
#include <sstream>
44
45
namespace
Teuchos
{
46
namespace
Details {
47
48
void
49
AllocationLogger::
50
logAllocation
(std::ostream& out,
51
const
size_type
numEntries,
52
const
size_type
numBytes,
53
const
char
typeName
[],
54
const
bool
verbose)
55
{
56
using
std::endl;
57
curAllocInBytes_ += numBytes;
58
if
(curAllocInBytes_ > maxAllocInBytes_) {
59
maxAllocInBytes_ = curAllocInBytes_;
60
}
61
62
if
(verbose) {
63
// Identify this as a Teuchos allocation.
64
out <<
"Teuchos,alloc,"
<< numEntries <<
","
<<
typeName
<<
","
<< numBytes << endl;
65
}
66
}
67
68
void
69
AllocationLogger::
70
logDeallocation
(std::ostream& out,
71
const
size_type
numEntries,
72
const
size_type
numBytes,
73
const
char
typeName
[],
74
const
bool
verbose)
75
{
76
using
std::endl;
77
curAllocInBytes_ -= numBytes;
78
79
if
(verbose) {
80
// First field identifies this as a Teuchos allocation. Use the
81
// same number of characters for "deall"(ocation) as
82
// "alloc"(ation) above, so that the columns line up nicely for
83
// human reading. Print deallocations as negative allocations.
84
// This makes it easy for a sed or awk script to compute totals.
85
out <<
"Teuchos,deall,-"
<< numEntries <<
","
<<
typeName
86
<<
",-"
<< numBytes << endl;
87
}
88
}
89
90
AllocationLogger::size_type
91
AllocationLogger::curAllocInBytes
() {
return
curAllocInBytes_; }
92
93
AllocationLogger::size_type
94
AllocationLogger::maxAllocInBytes
() {
return
maxAllocInBytes_; }
95
96
void
97
AllocationLogger::resetAllocationCounts
()
98
{
99
curAllocInBytes_ = 0;
100
maxAllocInBytes_ = 0;
101
}
102
103
AllocationLogger::size_type
AllocationLogger::curAllocInBytes_ = 0;
104
AllocationLogger::size_type
AllocationLogger::maxAllocInBytes_ = 0;
105
106
}
// namespace Details
107
}
// namespace Teuchos
Teuchos_Details_Allocator.hpp
Declaration of Teuchos::Details::Allocator, a tracking and logging implementation of the C++ Standard...
Teuchos::Details::AllocationLogger::resetAllocationCounts
static void resetAllocationCounts()
Reset the current and max total allocation numbers to zero.
Definition
Teuchos_Details_Allocator.cpp:97
Teuchos::Details::AllocationLogger::curAllocInBytes
static size_type curAllocInBytes()
Current total allocation in bytes.
Definition
Teuchos_Details_Allocator.cpp:91
Teuchos::Details::AllocationLogger::logAllocation
static void logAllocation(std::ostream &out, const size_type numEntries, const size_type numBytes, const char typeName[], const bool verbose)
Log an allocation.
Definition
Teuchos_Details_Allocator.cpp:50
Teuchos::Details::AllocationLogger::maxAllocInBytes
static size_type maxAllocInBytes()
Max total allocation ("high water mark") in bytes.
Definition
Teuchos_Details_Allocator.cpp:94
Teuchos::Details::AllocationLogger::size_type
std::size_t size_type
Type of the size of an allocation or deallocation.
Definition
Teuchos_Details_Allocator.hpp:80
Teuchos::Details::AllocationLogger::logDeallocation
static void logDeallocation(std::ostream &out, const size_type numEntries, const size_type numBytes, const char typeName[], const bool verbose)
Log a deallocation, that was previously logged using logAllocation().
Definition
Teuchos_Details_Allocator.cpp:70
Teuchos::typeName
std::string typeName(const T &t)
Template function for returning the concrete type name of a passed-in object.
Definition
Teuchos_TypeNameTraits.hpp:115
Teuchos
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
Generated by
1.17.0