gpt4 book ai didi

performance - BASH:一次设置多个变量/性能

转载 作者:行者123 更新时间:2023-11-29 09:41:29 24 4
gpt4 key购买 nike

我正在使用 msys 和 mingw 环境在 Windows 上运行 bash 脚本。我似乎遇到了一个问题,即使用“cut”或“sed”之类的命令会导致每次调用产生开销。我不确定这是运行 .exe 的 Windows 的效果还是什么。不管怎样,这是我的代码:

SOMETHING=`m6811-elf-readelf.exe -l "${TARGET_BASENAME}.elf" | sed '1,/Type / d' | sed '1,/^$/!d'`

echo "$SOMETHING" | while read -r line; do
# MEMORY_ADDRESSES=`echo $line | sed -ne 's/LOAD[^0-9a-z]*0x\([^ ]*\) 0x\([^ ]*\) 0x\([^ ]*\) 0x\([^ ]*\) 0x\([^ ]*\) .*/\1 \2 \3 \4 \5/p;'`
OFFSET=`echo "$line" | cut -f12 -d\ `
VIRTADDR=`echo "$line" | cut -f13 -d\ `
PHYSADDR=`echo "$line" | cut -f14 -d\ `
FILESIZE=`echo "$line" | cut -f15 -d\ `
MEMSIZE=`echo "$line" | cut -f16 -d\ `
echo $OFFSET $VIRTADDR $PHYSADDR $FILESIZE $MEMSIZE
done

我想让它尽快运行。我认为 sed 线让我慢下来,所以我删除了它,我只是使用 cut。对于我使用的每条切割线,此代码都慢得多。

SOMTHING 变量的内容是:

  LOAD           0x000000 0x00000000 0x00000000 0x00680 0x00680 RW  0x1000
LOAD 0x001100 0x00002100 0x00002100 0x00000 0x0005a R 0x1000
LOAD 0x00115a 0x0000215a 0x0000215a 0x00615 0x00669 RWE 0x1000
LOAD 0x002000 0x00010000 0x00008000 0x00056 0x00056 R E 0x1000
LOAD 0x003000 0x00018000 0x00028000 0x03ffe 0x03ffe R E 0x1000
LOAD 0x007000 0x0001c000 0x00038000 0x03e60 0x03e60 R E 0x1000
LOAD 0x00b000 0x00020000 0x00048000 0x021b5 0x021b5 R E 0x1000
LOAD 0x00e000 0x00024000 0x00058000 0x0236a 0x0236a R E 0x1000

这段代码的目的是从 $SOMETHING 输出中提取每个十六进制地址,这样我就可以做一些简单的数学运算。随着此文件变长(最多 20 行),它变得相当慢。

如果您知道我分配 OFFSET、VIRTADDR、PHYSADDR 等变量的有效方法,那将大有帮助!!

最佳答案

echo "$SOMETHING" | while read -r junk OFFSET VIRTADDR PHYSADDR FILESIZE MEMSIZE junk2; do
echo $OFFSET $VIRTADDR $PHYSADDR $FILESIZE $MEMSIZE
done

关于performance - BASH:一次设置多个变量/性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com