#!/usr/bin/env perl# SPDX-License-Identifier: GPL-2.0# Read two files produced by the stackusage script, and show the# delta between them.## Currently, only shows changes for functions listed in both files. We# could add an option to show also functions which have vanished or# appeared (which would often be due to gcc making other inlining# decisions).## Another possible option would be a minimum absolute value for the# delta.## A third possibility is for sorting by delta, but that can be# achieved by piping to sort -k5,5g.sub read_stack_usage_file {my %su;my $f = shift;open(my $fh, '<', $f)or die "cannot open $f: $!";while (<$fh>) {chomp;my ($file, $func, $size, $type) = split;# Old versions of gcc (at least 4.7) have an annoying quirk in# that a (static) function whose name has been changed into# for example ext4_find_unwritten_pgoff.isra.11 will show up# in the .su file with a name of just "11". Since such a# numeric suffix is likely to change across different# commits/compilers/.configs or whatever else we're trying to# tweak, we can't really track those functions, so we just# silently skip them.## Newer gcc (at least 5.0) report the full name, so again,# since the suffix is likely to change, we strip it.next if $func =~ m/^[0-9]+$/;$func =~ s/\..*$//;# Line numbers are likely to change; strip those.$file =~ s/:[0-9]+$//;$su{"${file}\t${func}"} = {size => $size, type => $type};}close($fh);return \%su;}@ARGV == 2or die "usage: 0ドル <old> <new>";my $old = read_stack_usage_file($ARGV[0]);my $new = read_stack_usage_file($ARGV[1]);my @common = sort grep {exists $new->{$_}} keys %$old;for (@common) {my $x = $old->{$_}{size};my $y = $new->{$_}{size};my $delta = $y - $x;if ($delta) {printf "%s\t%d\t%d\t%+d\n", $_, $x, $y, $delta;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型