در این مطلب، ویدئو Scalene: یک نمایه کننده حافظه CPU+GPU+با عملکرد بالا و با دقت بالا برای Python (PyCon US 2021) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:25:00
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,719 –> 00:00:02,560
سلام، من ایموری برگر، استاد
2
00:00:02,560 –> 00:00:03,840
علوم کامپیوتر در دانشگاه
3
00:00:03,840 –> 00:00:04,799
ماساچوست
4
00:00:04,799 –> 00:00:06,240
هستم، امروز در مورد یک
5
00:00:06,240 –> 00:00:09,599
نمایه ساز جدید برای پایتون به نام scalene صحبت خواهم کرد،
6
00:00:09,599 –> 00:00:11,200
همانطور که می دانید زمانی که مشکل عملکردی
7
00:00:11,200 –> 00:00:12,719
دارید یا فقط می خواهید کد شما
8
00:00:12,719 –> 00:00:14,000
سریعتر اجرا شود و به آن
9
00:00:14,000 –> 00:00:15,759
دسترسی پیدا کنید. برای اینکه یک پروفایلر به شما کمک کند
10
00:00:15,759 –> 00:00:18,720
مشکلات را شناسایی کنید و امیدواریم آنها را برطرف
11
00:00:18,720 –> 00:00:20,720
کنید، منتخبی از برخی از
12
00:00:20,720 –> 00:00:22,720
محبوب ترین پروفایلرها
13
00:00:22,720 –> 00:00:24,320
از جمله آنهایی است که به
14
00:00:24,320 –> 00:00:26,320
طور پیش فرض با پایتون عرضه می شوند، در واقع به قدری
15
00:00:26,320 –> 00:00:28,320
تعداد
16
00:00:28,320 –> 00:00:29,679
پروفایلرها زیاد است
17
00:00:29,679 –> 00:00:32,238
که یکی از پروفایلرها در واقع
18
00:00:32,238 –> 00:00:33,520
yappy نامیده می شود.
19
00:00:33,520 –> 00:00:35,600
که مخفف یک پروفایلر دیگر پایتون
20
00:00:35,600 –> 00:00:36,880
است،
21
00:00:36,880 –> 00:00:39,680
بنابراین امروز من در مورد اسکالیان صحبت خواهم کرد
22
00:00:39,680 –> 00:00:40,399
که
23
00:00:40,399 –> 00:00:42,719
یک پروفایلر دیگر است اما کاملاً
24
00:00:42,719 –> 00:00:44,160
متفاوت از سایرین است، بنابراین واقعاً هنوز
25
00:00:44,160 –> 00:00:44,800
26
00:00:44,800 –> 00:00:48,960
یک پروفایلر دیگر نیست، زیرا امیدوارم شما
27
00:00:48,960 –> 00:00:50,719
چیزی را که می خواهید ببینید. اگر برنامهای را
28
00:00:50,719 –> 00:00:52,000
پروفایلسازی میکنید، یک پروفایلر
29
00:00:52,000 –> 00:00:54,239
زمان اجرا زیادی
30
00:00:54,239 –> 00:00:55,920
ندارد، به این دلیل است که در
31
00:00:55,920 –> 00:00:57,199
حال حاضر بسیار کند است،
32
00:00:57,199 –> 00:00:59,120
بنابراین نمیخواهید آنقدر
33
00:00:59,120 –> 00:01:00,480
کندتر شوید،
34
00:01:00,480 –> 00:01:02,480
بنابراین بیایید ببینیم چگونه همه این
35
00:01:02,480 –> 00:01:05,199
پروفایلرها از نظر کارایی
36
00:01:05,199 –> 00:01:07,040
برای اندازهگیری این مقدار روی هم قرار میگیرند، ما میخواهیم آنها را
37
00:01:07,040 –> 00:01:08,799
بر روی یک معیار از مجموعه عملکرد pi
38
00:01:08,799 –> 00:01:09,680
39
00:01:09,680 –> 00:01:12,240
در محور y نمودار اجرا کنیم،
40
00:01:12,240 –> 00:01:14,080
زمان اجرای آن را عادی
41
00:01:14,080 –> 00:01:15,759
کردهایم، یعنی زمان اجرای
42
00:01:15,759 –> 00:01:17,840
پروفایلر را صرف کردیم و تقسیم کردیم. مدت
43
00:01:17,840 –> 00:01:19,280
زمان اجرای برنامه بدون
44
00:01:19,280 –> 00:01:20,400
نمایه سازی به
45
00:01:20,400 –> 00:01:22,200
این معنی است که بهترین حالت
46
00:01:22,200 –> 00:01:23,439
1.0 برابر است
47
00:01:23,439 –> 00:01:26,479
به این معنی که سربار وجود ندارد، بنابراین
48
00:01:26,479 –> 00:01:29,040
برخی از پروفایلرها با حداقل سربار 1.0 بسیار خوب عمل می کنند و
49
00:01:29,040 –> 00:01:30,560
حداقل سربار
50
00:01:30,560 –> 00:01:33,360
1.0 تا حد امکان پایین است و
51
00:01:33,360 –> 00:01:34,720
این سه پروفایلر بالا می روند
52
00:01:34,720 –> 00:01:37,680
. بیش از 1.5 x که بسیار
53
00:01:37,680 –> 00:01:38,159
خوب
54
00:01:38,159 –> 00:01:41,280
است، به همین دلیل است که آنها با رنگ سبز مشخص شده اند،
55
00:01:41,280 –> 00:01:42,799
متأسفانه برخی از
56
00:01:42,799 –> 00:01:45,280
پروفایلرهای دیگر به طور قابل توجهی کندتر
57
00:01:45,280 –> 00:01:47,040
هستند و برای احتیاط به رنگ زرد نشان داده شده اند،
58
00:01:47,040 –> 00:01:49,360
این شامل نمایه c داخلی است
59
00:01:49,360 –> 00:01:50,960
60
00:01:50,960 –> 00:01:53,200
و در اینجا محدوده کاهش سرعت است. از 2 برابر تا
61
00:01:53,200 –> 00:01:54,799
تقریباً 7
62
00:01:54,799 –> 00:01:57,520
برابر این عالی نیست، بدیهی است که شما
63
00:01:57,520 –> 00:01:59,119
مطمئناً نمی خواهید در تولید با
64
00:01:59,119 –> 00:02:00,240
نمایه سازی فعال باشید
65
00:02:00,240 –> 00:02:01,920
و این ناخوشایند است که
66
00:02:01,920 –> 00:02:03,360
سرعت کار تا این حد کاهش یابد،
67
00:02:03,360 –> 00:02:06,719
اما شاید این یک معامله نباشد.
68
00:02:06,719 –> 00:02:09,199
از سوی دیگر، برخی از پروفیلسازان دیگر هزینههای
69
00:02:09,199 –> 00:02:11,520
سربار بسیار زیادی
70
00:02:11,520 –> 00:02:14,560
را تا 40 برابر تحمیل میکنند، همانطور که میبینید
71
00:02:14,560 –> 00:02:16,640
برای ساختن این موضوع و واقعاً
72
00:02:16,640 –> 00:02:17,599
احساس درد میکنید،
73
00:02:17,599 –> 00:02:19,840
تصور کنید پروفایل برنامهای را بسازید که اجرای آن
74
00:02:19,840 –> 00:02:21,440
فقط یک دقیقه طول میکشد،
75
00:02:21,440 –> 00:02:24,160
اما اکنون برای اکثر مردم این کار 40 دقیقه طول میکشد.
76
00:02:24,160 –> 00:02:24,800
77
00:02:24,800 –> 00:02:26,800
78
00:02:26,800 –> 00:02:28,560
سربار غیرقابل قبولی خواهد بود، به همین دلیل است که
79
00:02:28,560 –> 00:02:30,160
در نمودار برای توقف قرمز رنگ شده اند،
80
00:02:30,160 –> 00:02:31,680
81
00:02:31,680 –> 00:02:35,120
اما بدتر می شود، بنابراین یک
82
00:02:35,120 –> 00:02:36,080
پروفایل کننده برای
83
00:02:36,080 –> 00:02:38,560
حافظه به نام نمایه کننده حافظه وجود دارد و
84
00:02:38,560 –> 00:02:39,760
نمایه ساز حافظه
85
00:02:39,760 –> 00:02:43,040
هزینه های سربار تقریباً 300x را تحمیل می کند
86
00:02:43,040 –> 00:02:45,840
که بسیار زیاد است و واقعاً
87
00:02:45,840 –> 00:02:48,000
مقدار فوق العاده ای است.
88
00:02:48,000 –> 00:02:50,319
بدیهی است که اکنون باید یک
89
00:02:50,319 –> 00:02:51,680
ستاره بزرگ در اینجا
90
00:02:51,680 –> 00:02:54,879
توسط نمایه ساز حافظه قرار دهیم زیرا بعد از
91
00:02:54,879 –> 00:02:56,720
همه این پروفایلرهای دیگر که قبلاً
92
00:02:56,720 –> 00:03:00,319
نشان داده ام فقط زمان cpu پروفایل را نشان داده ام در
93
00:03:00,319 –> 00:03:03,360
حالی که پروفایلر حافظه حافظه را پروفایل می کند، بنابراین
94
00:03:03,360 –> 00:03:04,800
شاید منطقی باشد
95
00:03:04,800 –> 00:03:07,920
که هزینه بیشتری داشته باشد و واقعاً بسیار پرهزینه تر است،
96
00:03:07,920 –> 00:03:09,840
اما همانطور که می بینید
97
00:03:09,840 –> 00:03:11,519
لزوماً اینطور نیست،
98
00:03:11,519 –> 00:03:13,680
می توان مشخصات حافظه را بسیار
99
00:03:13,680 –> 00:03:15,840
کارآمدتر کرد،
100
00:03:15,840 –> 00:03:17,680
بنابراین برای ایجاد پاسخ از این بحث
101
00:03:17,680 –> 00:03:19,680
راحتتر میخواهیم از یک نمودار
102
00:03:19,680 –> 00:03:22,720
به یک جدول حرکت کنیم و سپس آن را بچرخانیم
103
00:03:22,720 –> 00:03:24,640
تا خواندن آن کمی راحتتر باشد
104
00:03:24,640 –> 00:03:26,959
و بنابراین اکنون ممکن است از خود بپرسید
105
00:03:26,959 –> 00:03:29,840
که scalene در کجای این نمودار
106
00:03:29,840 –> 00:03:32,000
و پاسخ قرار میگیرد. scalene
107
00:03:32,000 –> 00:03:32,959
108
00:03:32,959 –> 00:03:34,799
برای این معیار بسیار کارآمد است و فقط 20 درصد
109
00:03:34,799 –> 00:03:37,440
کندتر از برنامه اصلی است
110
00:03:37,440 –> 00:03:38,959
، گزینههایی وجود دارد که به scalene اجازه میدهند
111
00:03:38,959 –> 00:03:40,560
سربار حتی کمتری را تحمیل کنند،
112
00:03:40,560 –> 00:03:42,799
اما این بحث بیشتر در مورد Full
113
00:03:42,799 –> 00:03:44,959
scalene با گزینههای پیشفرض
114
00:03:44,959 –> 00:03:48,080
و پروفایلهای full scalene پروفایلهای cpu
115
00:03:48,080 –> 00:03:50,799
و حافظه است. نمایههای gpu و
116
00:03:50,799 –> 00:03:51,760
ما به
117
00:03:51,760 –> 00:03:55,200
زودی در مورد آن با جزئیات بیشتر صحبت خواهیم کرد،
118
00:03:55,200 –> 00:03:57,439
اکنون پروفایلسازها معمولاً در یکی از
119
00:03:57,439 –> 00:03:58,560
دو دسته قرار میگیرند
120
00:03:58,560 –> 00:04:01,439
که آنها را بر اساس توابع یا خطوط نمایه میکنند.
121
00:04:01,439 –> 00:04:02,879
122
00:04:02,879 –> 00:04:05,040
123
00:04:05,040 –> 00:04:07,519
124
00:04:07,519 –> 00:04:10,000
اما فقط
125
00:04:10,000 –> 00:04:11,680
اعداد خطی که با شروع تابع مطابقت دارند در
126
00:04:11,680 –> 00:04:13,519
127
00:04:13,519 –> 00:04:15,280
غیر این صورت بقیه اطلاعات
128
00:04:15,280 –> 00:04:17,839
در کل تابع جمع
129
00:04:17,839 –> 00:04:19,839
می شوند که اگر سرگرمی کمی داشته باشید خوب است.
130
00:04:19,839 –> 00:04:21,519
اقداماتی که هر کدام زیاد انجام نمیدهند
131
00:04:21,519 –> 00:04:23,120
و سپس نمایهساز میگوید: سلام، این
132
00:04:23,120 –> 00:04:24,160
133
00:04:24,160 –> 00:04:25,680
عملکرد زمان زیادی میبرد، شاید باید
134
00:04:25,680 –> 00:04:27,360
آن را سریعتر اجرا
135
00:04:27,360 –> 00:04:29,600
کنید، اما وقتی
136
00:04:29,600 –> 00:04:32,400
عملکردهای طولانی
137
00:04:32,400 –> 00:04:33,919
دارید واقعاً زمانی که یک طول معین را دریافت کنید واقعاً عالی نیست.
138
00:04:33,919 –> 00:04:35,840
نمایهساز سطح عملکرد
139
00:04:35,840 –> 00:04:38,240
فوقالعاده مفید نیست، زیرا میگوید: سلام،
140
00:04:38,240 –> 00:04:39,600
این عملکرد کند است،
141
00:04:39,600 –> 00:04:41,360
اما ممکن است به کمک گرانول بیشتری بخواهید
142
00:04:41,360 –> 00:04:42,960
143
00:04:42,960 –> 00:04:44,800
، جایی که پروفایلکنندههای سطح خط وارد میشوند،
144
00:04:44,800 –> 00:04:47,040
بنابراین یک نمایهساز سطح خط
145
00:04:47,040 –> 00:04:49,360
البته اطلاعاتی را برای هر
146
00:04:49,360 –> 00:04:50,720
خط کد گزارش میکند
147
00:04:50,720 –> 00:04:52,639
که وقتی شما عالی است. نمایه کردن مجدد
148
00:04:52,639 –> 00:04:55,199
توابع بزرگ مانند مواردی که قبلاً ذکر کردم
149
00:04:55,199 –> 00:04:57,199
یا کدهایی که با کتابخانههایی
150
00:04:57,199 –> 00:04:59,440
مانند numpy تعامل میکنند، جایی که هر خط
151
00:04:59,440 –> 00:05:01,199
به طور بالقوه واقعاً کار زیادی
152
00:05:01,199 –> 00:05:03,759
انجام میدهد یا در مواردی که فراخوانیهای تابع
153
00:05:03,759 –> 00:05:05,680
به دلیل
154
00:05:05,680 –> 00:05:07,360
بارگذاری بیش از حد پایتون
155
00:05:07,360 –> 00:05:09,120
از طرف دیگر هنگامی که شما در حال
156
00:05:09,120 –> 00:05:10,560
پروفایلسازی هستید، پنهان میشوند. برنامه بزرگ
157
00:05:10,560 –> 00:05:13,280
این ممکن است خیلی خوب باشد، یک ریزه کاری
158
00:05:13,280 –> 00:05:14,320
درست پروفایل
159
00:05:14,320 –> 00:05:16,080
هر خط در یک برنامه بزرگ
160
00:05:16,080 –> 00:05:17,600
می تواند واقعا جنگل را برای درختان از دست بدهد،
161
00:05:17,600 –> 00:05:19,360
162
00:05:19,360 –> 00:05:21,919
بنابراین شما می توانید باید از خود بپرسید که چرا
163
00:05:21,919 –> 00:05:23,199
هر دو نه
164
00:05:23,199 –> 00:05:25,120
و در واقع این رویکردی است که
165
00:05:25,120 –> 00:05:26,240
scalene اتخاذ می کند.
166
00:05:26,240 –> 00:05:28,400
scalene به طور همزمان
167
00:05:28,400 –> 00:05:32,080
پروفایل سطح عملکرد و سطح خط را انجام می
168
00:05:32,400 –> 00:05:35,039
دهد، بنابراین این عالی است
169
00:05:35,039 –> 00:05:37,039
ویژگی دیگری برای برخی از پروفایلرها وجود دارد و
170
00:05:37,039 –> 00:05:39,759
آن این است که شما باید کد خود را تغییر دهید
171
00:05:39,759 –> 00:05:40,960
تا پروفایلر
172
00:05:40,960 –> 00:05:43,360
بتواند در واقع نمایه ایجاد کند. اکنون
173
00:05:43,360 –> 00:05:45,919
این یک تغییر فوقالعاده بزرگ نیست که
174
00:05:45,919 –> 00:05:48,720
شما فقط در تزئینات نمایه در
175
00:05:48,720 –> 00:05:51,039
عملکردهایی که میخواهید نمایه کنید، قرار دهید،
176
00:05:51,039 –> 00:05:52,800
اما این به نوعی قرار دادن گاری
177
00:05:52,800 –> 00:05:54,720
قبل از اسب است و فرض میکند که شما
178
00:05:54,720 –> 00:05:56,880
از قبل میدانید مشکلات
179
00:05:56,880 –> 00:05:59,440
کجاست که همیشه اینطور نیست.
180
00:05:59,440 –> 00:06:01,520
ورود و تغییر برنامه
181
00:06:01,520 –> 00:06:04,160
قبل از اجرای نمایه ساز
182
00:06:04,160 –> 00:06:06,319
بسیار مشکل است، بنابراین مقیاس پذیر مانند بسیاری از پروفایلرهای دیگر
183
00:06:06,319 –> 00:06:08,800
بر روی اطلاعات عملکرد گزارش کد اصلاح نشده
184
00:06:08,800 –> 00:06:10,319
185
00:06:10,319 –> 00:06:12,960
برای کل برنامه کار می کند، اما از
186
00:06:12,960 –> 00:06:14,960
دکوراتورهای نمایه نیز پشتیبانی می کند،
187
00:06:14,960 –> 00:06:17,120
بنابراین وقتی از آنها در scalene استفاده می کنید، به scalene می
188
00:06:17,120 –> 00:06:18,160
گوید.
189
00:06:18,160 –> 00:06:20,560
فقط بر روی عملکردهای خاصی تمرکز کنید
190
00:06:20,560 –> 00:06:22,479
که وقتی از قبل بدانید
191
00:06:22,479 –> 00:06:23,919
نقاط مشکل کجا هستند، بهترین کار را می کند
192
00:06:23,919 –> 00:06:25,919
اکنون می توانید بدون تغییر کد متوجه شوید
193
00:06:25,919 –> 00:06:28,400
194
00:06:28,800 –> 00:06:31,120
که تعدادی از پروفایلرها به
195
00:06:31,120 –> 00:06:33,520
طور شگفت انگیزی از رشته های پایتون پشتیبانی محدودی دارند،
196
00:06:33,520 –> 00:06:36,240
بنابراین می توانید ببینید
197
00:06:36,240 –> 00:06:37,840
که تعدادی از پروفایلرها تقریباً
198
00:06:37,840 –> 00:06:38,880
نیمی از آنها هستند
199
00:06:38,880 –> 00:06:41,039
که در هنگام اجرای کدهای چند رشته ای واقعاً کار نمی کنند.
200
00:06:41,039 –> 00:06:42,639
201
00:06:42,639 –> 00:06:44,319
و منظور من از آن این است که یا
202
00:06:44,319 –> 00:06:46,479
به معنای واقعی کلمه کار نمی کنند، یعنی فقط
203
00:06:46,479 –> 00:06:48,560
به طور کامل کار نمی کنند
204
00:06:48,560 –> 00:06:52,479
یا عملکرد را اشتباه گزارش می کنند، بنابراین
205
00:06:52,479 –> 00:06:54,560
اگر کدی دارید که در یک رشته در حال
206
00:06:54,560 –> 00:06:57,280
اجرا است، ممکن است زمان اجرای آن به طور کامل نادیده گرفته شود، در کمال
207
00:06:57,280 –> 00:06:58,479
تعجب ما
208
00:06:58,479 –> 00:07:00,639
معلوم می شود که هیچ نمایهسازی موجود
209
00:07:00,639 –> 00:07:02,319
به درستی کد پروفایل را
210
00:07:02,319 –> 00:07:04,479
که از کتابخانه چند پردازشی استفاده میکند استفاده نمیکند،
211
00:07:04,479 –> 00:07:06,639
بنابراین
212
00:07:06,639 –> 00:07:07,120
213
00:07:07,120 –> 00:07:08,319
اگر میخواهید چنین برنامهای را نمایه کنید، scalene تنها گزینه
214
00:07:08,319 –> 00:07:10,720
است، اما این
215
00:07:10,720 –> 00:07:12,800
ویژگیها بزرگترین مزیت مقیاسپذیری نسبت به
216
00:07:12,800 –> 00:07:14,960
پروفایلهای قبلی
217
00:07:14,960 –> 00:07:17,120
نیستند.
218
00:07:17,120 –> 00:07:19,120
موارد ذکر شده در اینجا در این اسلاید
219
00:07:19,120 –> 00:07:20,800
به جز یکی از مواردی که در یک
220
00:07:20,800 –> 00:07:22,960
ثانیه به آن اشاره خواهم کرد فقط برای
221
00:07:22,960 –> 00:07:25,919
خواندن اطلاعات در مقیاس بالا
222
00:07:25,919 –> 00:07:28,240
می توانند پایتون tim را جدا کنند. در مقابل c
223
00:07:28,240 –> 00:07:30,800
یا زمان بومی، میتواند تشخیص دهد که چه مقدار
224
00:07:30,800 –> 00:07:32,880
زمان در فراخوانهای سیستم صرف شده است
225
00:07:32,880 –> 00:07:35,440
، به این معنی که
226
00:07:35,440 –> 00:07:36,560
227
00:07:36,560 –> 00:07:39,599
اگر شما یکی از آنها را
228
00:07:39,599 –> 00:07:41,280
داشته باشید، روند حافظه را نشان میدهد
229
00:07:41,280 –> 00:07:43,360
و حجم کپی را گزارش میدهد که
230
00:07:43,360 –> 00:07:44,800
در عرض یک دقیقه توضیح میدهم
231
00:07:44,800 –> 00:07:46,639
و به طور خودکار آن را توضیح میدهم.
232
00:07:46,639 –> 00:07:48,960
همانطور که گفتم
233
00:07:48,960 –> 00:07:51,199
یک پروفایلر وجود دارد که یکی از این
234
00:07:51,199 –> 00:07:52,639
کارها را انجام
235
00:07:52,639 –> 00:07:54,560
می دهد به طور طبیعی نمایه کننده حافظه پروفایل حافظه را انجام
236
00:07:54,560 –> 00:07:56,319
می دهد، اما به یاد داشته باشید که
237
00:07:56,319 –> 00:07:58,400
این پروفایل کننده حافظه معیار
238
00:07:58,400 –> 00:08:00,879
تقریباً 300 برابر کندتر بود
239
00:08:00,879 –> 00:08:03,360
در حالی که scalene همان معیار را اجرا می کرد
240
00:08:03,360 –> 00:08:04,879
و یک نمایه حافظه
241
00:08:04,879 –> 00:08:08,319
تنها با 20 سربار تولید می کرد.
242
00:08:08,319 –> 00:08:10,560
بسیار خوب، بنابراین در ادامه این بحث،
243
00:08:10,560 –> 00:08:12,479
من قصد دارم در مورد اینکه چگونه scalene می
244
00:08:12,479 –> 00:08:14,000
تواند تمام این موارد دیگر را نمایه
245
00:08:14,000 –> 00:08:14,639
کند
246
00:08:14,639 –> 00:08:16,720
که به شما اطلاعات بسیار بیشتری
247
00:08:16,720 –> 00:08:18,400
در مورد برنامه های پایتون شما می دهد
248
00:08:18,400 –> 00:08:20,400
و باعث می شود scalene در شناسایی و رفع مشکلات عملکرد بهتر به شما کمک کند صحبت
249
00:08:20,400 –> 00:08:21,680
کنم.
250
00:08:21,680 –> 00:08:25,199
بنابراین استفاده از scalene ساده است،
251
00:08:25,199 –> 00:08:26,639
252
00:08:26,639 –> 00:08:28,240
شما به تازگی python3 را با scalene جایگزین کردهاید،
253
00:08:28,240 –> 00:08:30,960
گزینههای زیادی وجود دارد
254
00:08:30,960 –> 00:08:33,279
که به شما امکان میدهد نحوه استفاده از scalene prof. راهنمای خط تیره
255
00:08:33,279 –> 00:08:34,080
کد شما
256
00:08:34,080 –> 00:08:36,479
لیستی را ارائه می دهد که
257
00:08:36,479 –> 00:08:37,360
طبیعی است،
258
00:08:37,360 –> 00:08:39,839
من چند گزینه واقعاً مفید
259
00:08:39,839 –> 00:08:41,440
را بررسی می کنم که می خواهید در هنگام
260
00:08:41,440 –> 00:08:44,080
استفاده از مقیاس گذاری
261
00:08:44,080 –> 00:08:46,480
بدانید، بنابراین یکی از گزینه های مفید،
262
00:08:46,480 –> 00:08:48,080
نمایه کاهش یافته است
263
00:08:48,080 –> 00:08:50,399
که فقط برای خطوط کدی که پروفایل تولید می کند
264
00:08:50,399 –> 00:08:52,080
حداقل برای
265
00:08:52,080 –> 00:08:54,640
یک درصد از زمان اجرای کلی اجرا شود یا
266
00:08:54,640 –> 00:08:56,399
267
00:08:56,399 –> 00:08:58,640
مقدار مناسبی از حافظه را تخصیص دهد، بنابراین من آن را
268
00:08:58,640 –> 00:09:00,080
نشان نمیدهم، اما ما از این گزینه برای همه نمونههای بعدی استفاده میکنیم، بهطور
269
00:09:00,080 –> 00:09:03,680
270
00:09:03,920 –> 00:09:06,480
پیشفرض مقیاسبندی خروجی آن را
271
00:09:06,480 –> 00:09:07,680
به کنسول
272
00:09:07,680 –> 00:09:09,440
اما شما همچنین می توانید مقیاس گذاری را به خروجی
273
00:09:09,440 –> 00:09:11,279
یک فایل بگویید و
274
00:09:11,279 –> 00:09:14,959
اگر می خواهید می توانید به آن بگویید از html استفاده کند
275
00:09:14,959 –> 00:09:17,040
که منجر به تولید یک صفحه وب
276
00:09:17,040 –> 00:09:19,040
حاوی نتایج آن می شود
277
00:09:19,040 –> 00:09:22,240
و در اینجا یک نمایه نمونه است
278
00:09:22,240 –> 00:09:24,000
که با جزئیات بیشتر به این موضوع می پردازیم. در یک
279
00:09:24,000 –> 00:09:26,800
دقیقه اما قسمت بالای
280
00:09:26,800 –> 00:09:29,760
نمایه اطلاعات سطح خط است با خطوطی
281
00:09:29,760 –> 00:09:30,880
که
282
00:09:30,880 –> 00:09:33,279
وقتی سهم کمی در زمان اجرا یا
283
00:09:33,279 –> 00:09:35,040
مصرف حافظه دارند منتشر می شود
284
00:09:35,040 –> 00:09:37,360
و در پایین نمایه سطح عملکرد را دریافت می کنید
285
00:09:37,360 –> 00:09:38,640
286
00:09:38,640 –> 00:09:41,279
که sca لنز برای هر
287
00:09:41,279 –> 00:09:41,839
نمایه
288
00:09:41,839 –> 00:09:44,399
تمام اطلاعات جمعآوری شده را گزارش میکند و همچنین
289
00:09:44,399 –> 00:09:46,000
290
00:09:46,000 –> 00:09:48,160
خطوطی را که مسئول بیشترین مصرف حافظه هستند به ترتیب نزولی تفکیک میکند،
291
00:09:48,160 –> 00:09:49,519
292
00:09:49,519 –> 00:09:50,240
293
00:09:50,240 –> 00:09:51,839
بنابراین میتوانید به دنبال چیزهایی باشید که ممکن است
294
00:09:51,839 –> 00:09:54,000
295
00:09:54,000 –> 00:09:57,279
در یک نگاه مقدار زیادی از حافظه را مصرف کنند، در نهایت به طور خلاصه
296
00:09:57,279 –> 00:09:59,839
مقیاس نیز اجازه میدهد. شما برای غیرفعال کردن
297
00:09:59,839 –> 00:10:01,519
پروفایل حافظه و
298
00:10:01,519 –> 00:10:03,279
برخی از جنبه های دیگر نمایه سازی
299
00:10:03,279 –> 00:10:05,519
که بعداً با گفتن cpu در مورد آنها صحبت خواهم
300
00:10:05,519 –> 00:10:07,920
کرد این کمی اشتباه است زیرا
301
00:10:07,920 –> 00:10:09,120
اگر
302
00:10:09,120 –> 00:10:11,600
مقیاس gpu دارید همچنان پروفایل gpu را انجام می دهد اما
303
00:10:11,600 –> 00:10:14,000
هر دوی اینها بسیار کارآمد
304
00:10:14,000 –> 00:10:17,680
و مؤثر هستند. سربار صفر را تحمیل کنید،
305
00:10:17,680 –> 00:10:20,640
بنابراین وقتی پیش می روید و scalene
306
00:10:20,640 –> 00:10:22,480
را فقط با cpu اجرا می کنید، می توانید ببینید
307
00:10:22,480 –> 00:10:25,920
که ستون های اطلاعاتی
308
00:10:25,920 –> 00:10:27,519
بسیار کمتری گزارش می شود
309
00:10:27,519 –> 00:10:31,200
و سپس فقط روی زمان پردازنده
310
00:10:31,200 –> 00:10:32,000
یا زمان بالقوه
311
00:10:32,000 –> 00:10:35,760
gpu تمرکز می کنید، خوب است، بنابراین بیایید
312
00:10:35,760 –> 00:10:37,760
یک مثال ساده را مرور کنیم. چگونه
313
00:10:37,760 –> 00:10:39,600
رویکرد کلنگر
314
00:10:39,600 –> 00:10:42,160
315
00:10:42,160 –> 00:10:43,600
316
00:10:43,600 –> 00:10:46,720
scalene برای نمایهسازی میتواند مشکلات عملکرد را ریشهیابی کند، بنابراین در اینجا کدی وجود دارد که از numpy استفاده میکند و
317
00:10:46,720 –> 00:10:48,880
ما روی t تمرکز میکنیم. او در این مورد است، بنابراین
318
00:10:48,880 –> 00:10:50,079
فعلا نگران آن نباشید،
319
00:10:50,079 –> 00:10:52,079
اما در اینجا نمایه پروفایل c به
320
00:10:52,079 –> 00:10:53,440
نظر می رسد، بنابراین
321
00:10:53,440 –> 00:10:56,320
این یک نمایه سطح عملکرد است و
322
00:10:56,320 –> 00:10:58,240
ممکن است دیدن آن سخت باشد، اما چیزی که به ما می گوید
323
00:10:58,240 –> 00:11:00,959
این است که main تمام زمان اجرا را مصرف می کند
324
00:11:00,959 –> 00:11:03,920
که فوق العاده نیست در
325
00:11:03,920 –> 00:11:06,079
مقابل، در اینجا نمایهای از نمایهگر خط وجود دارد
326
00:11:06,079 –> 00:11:07,120
327
00:11:07,120 –> 00:11:08,880
و البته به ما میگوید چه مقدار
328
00:11:08,880 –> 00:11:11,040
زمان برای هر یک از
329
00:11:11,040 –> 00:11:11,920
خطوط اصلی صرف میشود،
330
00:11:11,920 –> 00:11:13,839
اما بهویژه قابل اجرا
331
00:11:13,839 –> 00:11:15,360
نیست، در واقع سرنخی زیادی
332
00:11:15,360 –> 00:11:16,320
از آنچه در حال رخ دادن
333
00:11:16,320 –> 00:11:18,880
است به ما نمیدهد. چرا در یک خط کد خاص کاهش سرعت وجود دارد،
334
00:11:18,880 –> 00:11:21,279
335
00:11:21,279 –> 00:11:23,839
بنابراین اینجا نمایه scalene است، من فعلاً
336
00:11:23,839 –> 00:11:25,680
نمایه سطح عملکرد و
337
00:11:25,680 –> 00:11:29,120
خلاصه مصرف حافظه را حذف می کنم،
338
00:11:29,120 –> 00:11:31,839
بنابراین به جای اینکه بگویم چقدر
339
00:11:31,839 –> 00:11:33,760
زمان در هر خط از مقیاس بندی کد صرف شده است
340
00:11:33,760 –> 00:11:36,480
، اجرای را خراب می کند. زمان در
341
00:11:36,480 –> 00:11:38,800
زمان صرف شده برای اجرای کد پایتون
342
00:11:38,800 –> 00:11:40,959
زمان صرف شده برای اجرای کد بومی که
343
00:11:40,959 –> 00:11:42,399
به معنی کتابخانه های c
344
00:11:42,399 –> 00:11:45,120
مانند numpy و زمان سیستم است که
345
00:11:45,120 –> 00:11:47,920
شامل زمان صرف شده برای انجام دادن
346
00:11:47,920 –> 00:11:51,120
برنامه نویس پایتون می شود اگر
347
00:11:51,120 –> 00:11:52,639
می خواهید برنامه ای بسازید.
348
00:11:52,639 –> 00:11:55,040
هدف شما بسیار کارآمدتر این است که
349
00:11:55,040 –> 00:11:56,399
زمان اجرا را به
350
00:11:56,399 –> 00:11:58,720
خارج از مفسر پایتون و به
351
00:11:58,720 –> 00:12:00,399
کتابخانه های بومی منتقل کنید
352
00:12:00,399 –> 00:12:03,360
در حال حاضر واضح است که کد در
353
00:12:03,360 –> 00:12:05,200
واقع این کار را انجام می دهد که
354
00:12:05,200 –> 00:12:07,279
بیشتر وقت صرف