99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代寫cs250編程、代做C++程序語言
代寫cs250編程、代做C++程序語言

時間:2024-11-07  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



Project 5: Profiling an Assembly Program
Goal
In this project you will learn how to find where a program spends most of the execution time
using statistical profiling, and you will implement your own statistical profiler.
Task 0: Download the initial sources and start tsearch_asm6.s
To start your project clone the project5 repository:
git clone /homes/cs250/sourcecontrol/work/$USER/project5-src.git
cd project5-src
The implementation of binary tree search in C is similar to the one from project4. You will copy
your implementation from tsearch_asm5.s into tsearch_asm6.s
To test the implementation type
data 149 $ ./run_bench.sh
================== Running TreeSearch Iterative in C benchmark ================
Total CPU time: 4.125084397 seconds
real 0m7.960s
user 0m7.830s
sys 0m0.124s
================== Running ASM 6 benchmark ================

It will also try to run the tsearch_asm6.s but it will fail if it is not implemented yet.
Task 1:Insert profiling code in the benchmark
The file profil.c implements the code that starts profiling the program, and writes the histogram
of the file at the end:
void start_histogram();
void print_histogram();
Open the file profil.c and see how start_histogram creates an array of counters, that is passed
to profil(), that creates the execution histogram. See "man profil". This histogram is an array of
integers, where every integer represents an instruction or group of instruction. profil() activates a
timer that every .01secs looks at the program counter of the program, and increments the
counter in the histogram that corresponds to that program counter.
Open the file tsearch_bench_better.c and find the main(). Then above main, you will insert the
external prototypes of start_histogram() and print_histogram(): as follows. Also call
start_histogram() at the beginning of main() and print_histogram() at the end.
extern void start_histogram();
extern void print_histogram();
/*
* Main program function. Runs the benchmark.
*/
__attribute__ (( visibility("default") ))
int
main(int argc, char **argv)
start_histogram();
…..
print_histogram();
}
Modify run_bench, so both gcc compilation commands link profil.c
echo ================== Running TreeSearch Iterative in C benchmark ================
gcc -g -static -o tsearch_bench_iterative_c tsearch_bench_better.c tsearch.c AVLTree.c tsearch_iterative.c profil.c || exit 1

gcc -g -static -o tsearch_bench_asm6 tsearch_bench_better.c tsearch.c AVLTree.c tsearch_asm6.s profil.c || exit 1

Now type run_bench.
data149 $ ./run_bench.sh
You will find the following file:
ls *.hist
tsearch_bench_iterative_c.hist
Open this file, and you will observe that it contains the program counters in the histogram that
are larger than 0. The counter is multiplied by 1ms, so the counters are displayed in ms. Identify
the program counter where the program is spent most of its time:

0x45b86a 60ms
0x45b870 1120ms
0x45b878 10ms
0x45b87c 30ms

Then run the command "nm -v tsearch_bench_iterative_c | less"that prints all the functions in
the program sorted by address, and finds the function that includes this program counter. Use
the up/down arrow keys to navigate "less".
data 163 $ nm -v tsearch_bench_iterative_c | less
….
000000000045aee0 T __stpcpy_evex
000000000045b340 T __strchr_evex
000000000045b5e0 T __strchrnul_evex
000000000045b840 T __strcmp_evex
000000000045bcb0 T __strcpy_evex
000000000045c100 T __strlen_evex
000000000045c280 T __strncmp_evex
000000000045c7f0 T __strncpy_evex
….
__strcmp_evex is the function where tsearch_bench_iterative_c spends most of its time.
Now to find the assembly instruction type "objdump -d tsearch_bench_iterative_c | less" that
prints the assembly instructions that make the program and their address in the program. Find
the assembly instruction that includes the counter 45b870, that is 45b86c . This is because
0x45b870 is larger than 45b86c but smaller than 45b8**.
objdump -d tsearch_bench_iterative_c | less
000000000045b840 <__strcmp_evex>:
45b840: f3 0f 1e fa endbr64
45b844: 89 f8 mov %edi,%eax
45b846: 31 d2 xor %edx,%edx
45b848: 62 a1 fd 00 ef c0 vpxorq %xmm16,%xmm16,%xmm16
45b84e: 09 f0 or %esi,%eax
45b850: 25 ff 0f 00 00 and $0xfff,%eax
45b855: 3d 80 0f 00 00 cmp $0xf80,%eax
45b85a: 0f 8f 70 03 00 00 jg 45bbd0 <__strcmp_evex+0x3**>
45b860: 62 e1 fe 28 6f 0f vmovdqu64 (%rdi),%ymm17
45b866: 62 b2 75 20 26 d1 vptestmb %ymm17,%ymm17,%k2
45b86c: 62 f3 75 22 3f 0e 00 vpcmpeqb (%rsi),%ymm17,%k1{%k2}
45b8**: c5 fb 93 c9 kmovd %k1,%ecx
45b877: ff c1 inc %ecx
45b879: 74 45 je 45b8c0 <__strcmp_evex+0x80>
45b87b: f3 0f bc d1 tzcnt %ecx,%edx
45b87f: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax
The instruction marked in red is the instruction that is taking the most time.
Task 2: Write your own profiler program.
Using the example in Task1, write a program myprof.c that prints a table with the top 10
functions where the program spends most of its time and it will also print for each function,
which instructions take most of the time . The program will take the following arguments:
myprof prog
The program will open prog.hist, and store the entries in an array of structs with the program
counter and the time in ms. Then it will call system("nm -v prog > nm.out") using the system()
function (see man system) that executes a command inside a C program, and redirect it into a
file nm.out. Myprof will read nm.out, and it will also store the entries in an array of structs with
program counters and function names. Then for every pc in the histogram, it will increment the
time in ms of the corresponding function. After this is done, it will sort the functions by time, and
identify the 10 top functions where the execution spends most of the time. Finally, it will also
print the assembly code of these functions using objdump, and print the time spend in each
assembly instruction. Only the instructions with a time greater than 0 are printed.
The output will look like the following example:
myprof tsearch_bench_iterative_c
Top 10 functions:
ith Function Time(ms) (%)
1: mystrcmp 120ms 25%
2: malloc 80ms 36%
….
Top 10 functions Assembly
1: mystrcmp 120ms 25%
120ms 42cf60: f6 c2 20 test $0x20,%dl
2: malloc 80ms 36%
20ms 4628cc: 48 89 de mov %rbx,%rsi
10ms 4628cf: e8 cc e3 ff ff call 460ca0
Task 3:Using your profiler, improve your tsearch_asm6.s
Using your profiler, optimize your implementation in tsearch_asm6.s
Grading
The grading will be done during lab time. You don't need to turn in the implementation since the
git repository will have your most recent implementation.

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp




 

掃一掃在手機打開當前頁
  • 上一篇:代做COMP3230、Python語言程序代寫
  • 下一篇:MSE 280代做、代寫C++,Python程序
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發動機性能
    挖掘機濾芯提升發動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
    合肥機場巴士2號線
    合肥機場巴士2號線
    合肥機場巴士1號線
    合肥機場巴士1號線
  • 短信驗證碼 豆包 幣安下載 AI生圖 目錄網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          9000px;">

                一区二区三区91| 国产精品色一区二区三区| 欧美一区二区三区四区视频| 欧美大度的电影原声| 久久99国产精品成人| 欧美久久久一区| 色一情一乱一乱一91av| 精品视频一区二区不卡| 精品理论电影在线| 久久综合av免费| 99国产精品久| 色综合天天综合给合国产| 欧美无砖砖区免费| 欧美日韩大陆在线| 国产精品不卡在线| 图片区小说区区亚洲影院| 26uuu精品一区二区| 欧美日韩免费高清一区色橹橹| 国产喂奶挤奶一区二区三区| 亚洲男人的天堂一区二区 | 色呦呦一区二区三区| 亚洲国产欧美另类丝袜| 欧美日韩视频在线一区二区| 国产亚洲一二三区| 国内外成人在线视频| 成人国产亚洲欧美成人综合网| 日韩精品一级中文字幕精品视频免费观看| 日韩一区二区精品在线观看| 亚洲日本va在线观看| 在线亚洲高清视频| 色狠狠色狠狠综合| 一本色道久久综合狠狠躁的推荐| 亚洲免费观看高清完整版在线观看熊| 日韩三级视频中文字幕| 在线综合视频播放| 国产喂奶挤奶一区二区三区| 国产在线精品免费av| 七七婷婷婷婷精品国产| fc2成人免费人成在线观看播放| 国产尤物一区二区| 亚洲国产精品久久久男人的天堂| 欧美日韩国产不卡| 色综合久久66| 日韩在线一区二区三区| 色天使色偷偷av一区二区| 久久久久久99久久久精品网站| 国产.欧美.日韩| 91在线你懂得| 国产尤物一区二区| 成人h版在线观看| 欧美日韩国产区一| 国产在线视频一区二区| 91在线观看一区二区| 九色porny丨国产精品| 日产精品久久久久久久性色| 久久成人av少妇免费| 99精品欧美一区二区三区小说 | 亚洲日本欧美天堂| 一区二区三区免费| 欧美日本一区二区三区四区| 亚洲综合丁香婷婷六月香| 日韩女优电影在线观看| 国产91在线看| 久久久精品天堂| 国产欧美日韩另类视频免费观看| 国产网站一区二区| 亚洲视频免费看| 一级日本不卡的影视| 国产免费成人在线视频| 五月综合激情婷婷六月色窝| 不卡高清视频专区| 精品国产伦一区二区三区观看方式 | 亚洲三级电影全部在线观看高清| 久久国产精品色婷婷| 欧美一区二区三区影视| 久久国产精品72免费观看| 99久久精品国产一区| 欧美一区二区三区人| 美女视频黄频大全不卡视频在线播放| 欧美大片在线观看一区二区| 欧美大胆人体bbbb| 欧美日韩中文字幕一区二区| 日韩亚洲欧美在线| 99综合电影在线视频| 国产福利不卡视频| 精品粉嫩超白一线天av| 热久久一区二区| 国产精品一区二区你懂的| 国产成人精品1024| 久久99国产精品麻豆| 在线免费一区三区| 91国偷自产一区二区三区成为亚洲经典 | 一区二区三区中文字幕在线观看| 99re66热这里只有精品3直播 | 欧美日韩国产高清一区二区 | 久久久激情视频| 午夜亚洲国产au精品一区二区| 欧美日韩国产精品成人| 国产一区二区伦理| 日韩欧美成人一区二区| 国产亚洲欧美日韩日本| 不卡在线观看av| 裸体一区二区三区| 91麻豆成人久久精品二区三区| 久久精品国产亚洲a| 国产精品一区三区| 懂色av中文一区二区三区| 国产午夜精品在线观看| 欧美日韩一区不卡| 亚洲视频在线观看三级| 久久尤物电影视频在线观看| 亚洲一线二线三线视频| 日韩av在线播放中文字幕| 91精品国产综合久久香蕉的特点| 日日骚欧美日韩| 免费成人小视频| 在线观看日韩电影| 色综合久久久网| 亚洲欧洲国产专区| 欧美在线一区二区| 国产裸体歌舞团一区二区| 日韩一区二区麻豆国产| 国产精品99精品久久免费| 国产精品妹子av| 午夜精品一区二区三区免费视频| 日韩一区在线播放| 欧美一级日韩不卡播放免费| 亚洲国产欧美一区二区三区丁香婷| 成人免费高清视频| 精品国产青草久久久久福利| 欧美日本国产一区| 91麻豆产精品久久久久久| 免费不卡在线视频| 九九**精品视频免费播放| 日本aⅴ亚洲精品中文乱码| 日韩精品一区二区在线| 精品伦理精品一区| 亚洲视频一区二区免费在线观看| 日韩免费在线观看| 91视频国产资源| 久久久久久99久久久精品网站| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲人成电影网站色mp4| 在线中文字幕不卡| 日本aⅴ精品一区二区三区| 久久夜色精品国产噜噜av | 国产成人av一区| 国产欧美视频一区二区| 日韩av中文在线观看| xfplay精品久久| 亚洲毛片av在线| 日韩中文字幕区一区有砖一区| 在线观看av不卡| 色妞www精品视频| 一区二区三区视频在线观看| 95精品视频在线| 成人午夜电影久久影院| 国产欧美精品区一区二区三区 | 欧美性生活久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩精品亚洲专区| 亚洲国产精品人人做人人爽| 日韩欧美国产午夜精品| 国产风韵犹存在线视精品| 免播放器亚洲一区| 久久精子c满五个校花| 日本久久一区二区三区| 91老师片黄在线观看| 欧美一级日韩一级| 亚洲成人免费视| 亚洲精品一区二区三区影院| 国产精品视频免费看| 成人免费在线播放视频| 日韩精品一区二区三区在线播放| 亚洲午夜视频在线观看| 91麻豆精品国产自产在线| 粗大黑人巨茎大战欧美成人| 亚洲一区二区三区四区在线免费观看| 99re热视频这里只精品| 国产亚洲精品资源在线26u| 亚洲理论在线观看| 国产精品一区三区| 亚洲欧美国产77777| 国产三级精品三级在线专区| 99久久精品费精品国产一区二区| 午夜国产不卡在线观看视频| 一区av在线播放| 欧美精品一二三| 久久麻豆一区二区| 久久亚洲综合色一区二区三区| 日韩久久免费av| 不卡电影一区二区三区| 精品免费视频.| 日本视频免费一区| 欧美精品一区二区三区蜜桃 | 欧美日韩综合在线免费观看| 国产老妇另类xxxxx| 日韩高清中文字幕一区| 欧美一二三区精品| 欧美在线观看视频一区二区三区|