From 4529a95e14de37b40ece0c1c0b3894a5bdbf6f58 Mon Sep 17 00:00:00 2001 From: Joachim Fenkes Date: Fri, 16 Nov 2018 15:57:39 +0100 Subject: Add tools to help measure and compare SBE image size - Break SBE image size contributions down by module - Measure code, data and stack usage - Compare sizes before and after a change to measure change impact - Compare object section sizes, stack usage, disassembly, map file Change-Id: Id873ba86cff7b8ecffdd37c028a57091535ea06d Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69407 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: RAJA DAS --- src/tools/utils/sbe-size/section-deltas.py | 48 ++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/tools/utils/sbe-size/section-deltas.py (limited to 'src/tools/utils/sbe-size/section-deltas.py') diff --git a/src/tools/utils/sbe-size/section-deltas.py b/src/tools/utils/sbe-size/section-deltas.py new file mode 100644 index 00000000..420807b9 --- /dev/null +++ b/src/tools/utils/sbe-size/section-deltas.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/tools/utils/sbe-size/section-deltas.py $ +# +# OpenPOWER sbe Project +# +# Contributors Listed Below - COPYRIGHT 2018 +# [+] International Business Machines Corp. +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. +# +# IBM_PROLOG_END_TAG + +from sys import argv, stderr +import numpy as np + +def read_file(fname): + result = dict() + with open(fname) as f: + for line in f: + parts = line.split() + result[parts[0]] = np.array(parts[1:], dtype=int) + return result + +reference = read_file(argv[1]) +current = read_file(argv[2]) +result = dict() +width = len(next(iter(reference.values()))) + +keys = set(reference.keys()) +keys.update(current.keys()) +for name in sorted(keys): + delta = current.get(name, np.zeros(width, dtype=int)) - reference.get(name, np.zeros(width, dtype=int)) + if delta.any(): + print(name, *delta) -- cgit v1.2.1