Profilování (programování)

Profilování je vyhledávání míst v programu, která jsou vhodná pro optimalizaci. Vyhledávání probíhá s pomocí speciálních nástrojů, nazývaných profilery, za běhu programu (tj. forma dynamické analýzy). Na základě konkrétního požadavku na optimalizaci se sleduje například využití paměti, doba a frekvence provádění různých částí programu, systémová volání a podobně.

Možnosti konkrétního profileru závisí na programovacím jazyku, možnostech kompilátoru a platformě na které sledovaný program běží. Pro efektivní využívaní výstupních dat profileru k optimalizaci programu je důležité brát v potaz možné zkreslení výsledků vzniklé samotným připojením profileru k programu a metodou sběru dat.

Optimalizaci práce s pamětí na základě výstupů z profilování řeší programátor. V programovacích jazycích typu C bez pokročilé správy paměti vyžaduje sledování paměti zásah programátora. Na platformách Java a .NET se při profilování paměti sleduje využívaná paměť, její alokace a uvolnění pomocí garbage collectoru.

Historie

Nástroje pro analýzu výkonnosti existovaly již pro systémy IBM/360 a IBM/370 po roce 1970. Obvykle byly založeny na využití časovače, pomocí kterého se zaznamenávaly čas a stav vykonávaného programu (tzv. PSW, anglicky program status word), takže bylo možné najít tak zvaná horká místa programu. Na začátku roku 1974 byly uvedeny simulátory instrukční sady procesoru, které umožnily plné sledování průběhu výpočtu a přinesly další možnosti sledování výkonnosti.

Pro unixové systémy byl v roce 1979 uveden jednoduchý nástroj prof, který vypisoval všechny použité funkce a jak dlouho jejich provedení trvalo. V roce 1982 rozšířil tento koncept nástroj gprof, který vytvářel kompletní analytické grafy volání (anglicky call graph).[1]

V roce 1994 publikovali zaměstnanci firmy Digital Equipment Corporation Amitabh Srivastava a Alan Eustace práci popisující ATOM[2], což je platforma pro konverzi programů na svůj vlastní profiler. ATOM funguje tak, že při kompilaci vkládá do výstupního kódu části, které poskytují data pro analýzu. Tato technika se nazývá instrumentace (anglicky instrumentation).

V roce 2004 byly práce popisující Gprof a ATOM zařazeny na seznam 50 nejvýznamnějších prací v PLDI (anglicky Programming Language Design and Implementation).[3]

Typy profilerů v závislosti na výstupních datech

Možný Výstup Call-graph profileru

Flat profilery

Flat profilery zaznamenávají u jednotlivých funkcí průměrnou dobu zpracování, ale nesledují odkud a jak často jsou volány.

Call-graph profilery

Call-graph profilery (Call-graph = graf volání funkcí) zaznamenávají dobu a četnost volání funkcí, včetně výpisu zásobníku volání funkcí (parametry funkcí se nezaznamenávají).

Typy profilerů v závislosti na granularitě dat

Podle typu sběru dat jsou profilery řazeny do dvou skupin na statické profilery a event-based profilery.

Statické profilery

Některé profilery pracují jako sběrače vzorků. Takovýto vzorkovací profiler sbírá data z cílového programu v pravidelných intervalech, to dělá pomocí vyvolání přerušení v operačním systému. Vzorkovací profily bývají obvykle méně přesné, ale umožňují cílovému programu běžet téměř plnou rychlostí.

Výsledná data nejsou přesná ale statisticky přibližná. "Skutečné množství chyb je větší nežli jedna perioda. Ve skutečnosti, pokud je n vzorkovacích period, potom očekávaná chyba je rovna [4]

V praxi potom může takovýto vzorkovací profiler poskytovat přesnější obraz o běhu cílového programu, než ostatní způsoby a to proto, že do běhu cílového program nezasahují natolik aby ho ovlivnili což může mít za následek paměťovou náročnost či zpomalení běhu.

Dedikovaný hardware může jít i nad rámec toho. ARM Cortex-M3 a některé MIPOS procesory mají registr zvaný PCSAMPLE, ten sbírá data z programového čítače a jeho účast je téměř nezjistitelná.

Nejčastěji používané statické profilery jsou AMD CodeAnalyst, Apple Inc. Shark (OSX), oprofile (Linux), Intel VTune, Parallel Amplifier (část Intel Parallel Studio) a Oracle Solaris Studio Performance Analyzer.[5]

Event-based

  • Java: JVMTI (JVM Tools Interface) API, dříve známo jako JVMPI (JVM Profiling Iterface) poskytuje cestu jak zachytávat některé události jako je spuštění vlákna, jeho ukončení apodobně.
  • .Net: Lze připojit profilovací agent jako COM server CLR za použití Profiling API. Podobně jako Java poskytuje prostředky jak zachytávat události jako je vstup a opuštění metody nebo vytvoření objektu.
  • Python: Profilování zahrnuje profil modulu, hotshot (call-graf based) a použití 'sys.setprofile', c_{call,return,exception}, python_{call,return,exception}.
  • Ruby: Používá podobné profilování jako Python, Flat-profiler v profile.rb, modul, Ruby-prof C-extension.

Instrumentace

Tato technika účinně přidává instrukce do cílového programu za účelem shromáždit požadované informace. Přidané instrukce mohou však změnit změnu výkonu a v některých případech může vést i k nepřesnosti výsledků. Vliv závisí na tom, jaké informace jsou shromažďovány a na tom jaká je úroveň podrobností. Například přidání kódu počítání každého volání procedury/rutiny bude mít pravděpodobně menší vliv než počítat, kolikrát každý příkaz poslechl. Některé počítače mají přidaný speciální hardware pro sběr informací. V tom případě je dopad na běh programu mnohem menší. Přístrojové vybavení je klíčem k určování úrovně kontroly a času, který je potřeba.

  • Manuálně: Určuje programátor např. přidáním kódu na měření času určitého úkonu a to vlastní metodou nebo pomocí API, např. Application Response Measurement.
  • Automatický kód: Strojově přidán do zdrojového kódu pomocí automatického nástroje např. Parasoft Insure++
  • Intermediate language: Instrumentace přidána do sestavy nebo binárního kódu, vhodné pro více jazyků vyšší úrovně, např. OpenPAT.
  • Asistence kompilátoru: gprof, Quantify používá metody: gcc -pg ... pro gprof, a quantify g++..., pro Quantify.
  • Binární překlad: Nástroj přidá instrumentaci do zkompilovaného spustitelného souboru, např. ATOM.
  • Runtime instrumentace: Proběhne přímo před provedením kódu. Běh programu je následně plně pod dohledem nástroje, např. Pin, Valgrind, DynamoRIO.
  • Runtime přidání: Kód je upraven za běhu aby byla provedena pomocná funkce, např. DynInst.

Reference

V tomto článku byl použit překlad textu z článku Profiling (computer programming) na anglické Wikipedii.

  1. Gprof: a Call Graph Execution Profiler http://docs.freebsd.org/44doc/psd/18.gprof/paper.pdf
  2. http://www.stanford.edu/class/cs295/papers/atom.pdf[nedostupný zdroj]
  3. http://www.cs.utexas.edu/users/mckinley/20-years.html
  4. Statistical Inaccuracy of gprof Output. www.cs.utah.edu [online]. [cit. 21-04-2015]. Dostupné v archivu pořízeném dne 29-05-2012. 
  5. (2013) "Suitability of Performance Tools for OpenMP Task-Parallel Programs" in Proc. 7th Int'l Workshop on Parallel Tools for High Performance Computing.: 25–37. 

Související články

Externí odkazy

Read other articles:

Dyota Marsudi Dyota Mahottama Marsudi atau biasa dikenal sebagai Dyota Marsudi (lahir 8 Februari 1989), adalah presiden direktur PT Bank Aladin Syariah Tbk yang resmi dinyatakan efektif menjabat pada 11 November 2021, menyusul Keputusan Anggota Dewan Komisioner OJK Nomor KEP-166/D.03/2021.[1][2] Pendidikan Lulus sebagai seorang sarjana dari Fakultas Ekonomi dan Bisnis Universitas Indonesia pada program studi akuntasi, Dyota melanjukan kuliah magisternya di INSEAD dan meraih ge...

 

Biassono commune di Italia Tempat categoria:Articles mancats de coordenades Negara berdaulatItaliaRegion di ItaliaLombardyProvinsi di ItaliaProvinsi Monza dan Brianza NegaraItalia Ibu kotaBiassono PendudukTotal12.305  (2023 )GeografiLuas wilayah4,89 km² [convert: unit tak dikenal]Ketinggian202 m Berbatasan denganArcore Lesmo Lissone Monza Vedano al Lambro Villasanta Macherio SejarahSanto pelindungMartinus dari Tours Informasi tambahanKode pos20853 Zona waktuUTC+1 UTC+2 Kode telepon...

 

Roman Catholic church in Laguna, Philippines Church in Laguna, PhilippinesNagcarlan ChurchSaint Bartholomew the Apostle Parish ChurchChurch facade in 2013Nagcarlan ChurchShow map of LagunaNagcarlan ChurchShow map of LuzonNagcarlan ChurchShow map of Philippines14°08′11″N 121°25′03″E / 14.13629°N 121.41740°E / 14.13629; 121.41740LocationNagcarlan, LagunaCountryPhilippinesDenominationRoman CatholicHistoryStatusParish churchDedicationSt. BartholomewDedicated158...

Chronologies Le train de Montpellier à Palavas à la gare de l'Esplanade pendant l'été 1956.Données clés 1953 1954 1955  1956  1957 1958 1959Décennies :1920 1930 1940  1950  1960 1970 1980Siècles :XVIIIe XIXe  XXe  XXIe XXIIeMillénaires :-Ier Ier  IIe  IIIe Chronologies géographiques Afrique Afrique du Sud, Algérie, Angola, Bénin, Botswana, Burkina Faso, Burundi, Cameroun, Cap-Vert, République centrafricaine, Comores, Républ...

 

American law school Not to be confused with Thomas Jefferson University. Thomas Jefferson School of LawEstablished1969School typePrivate law schoolDeanLinda Keller[1]LocationSan Diego, California, United StatesEnrollment264 (2022)[2]Faculty68 (12 Full-time and 56 Part-time [2]Bar pass rate4% (July 2023 first-time bar takers)[3]Websitewww.tjsl.edu Thomas Jefferson School of Law (TJSL) is a private law school in San Diego, California. It offers a Juris Doctor and...

 

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Пт�...

Korean noodle dish MilmyeonTypeKorean noodlesPlace of originKoreaRegion or stateBusanMain ingredientsNoodles (wheat flour, sweet potato and potato starch), meat broth, vegetablesVariationsmul milmyeon, bibim milmyeon  Media: Milmyeon Milmyeon (Korean: 밀면, meaning wheat noodle) is a noodle dish that originated in Busan, South Korea. Milmyeon is a variant of the North Korean noodle dish naengmyeon. It consists of wheat noodles in a cold meat broth (mul milmyeon) or a spicy...

 

Association football club in Northern Cyprus Football clubÇetinkayaFull nameÇetinkaya Türk Spor KulübüFounded3 January 1930; 94 years ago (3 January 1930)GroundNicosia Atatürk Stadium,North NicosiaCapacity28,000ChairmanSüleyman Yemen [1]Head CoachDerviş Kolcu [2]LeagueSüper Lig2017–18Süper Lig, 3rd[3] Home colours Away colours Çetinkaya Türk Spor Kulübü, also known as Kırmızı Şimşekler (lit. 'Red Thunders'), is a Turkish Cypriot ...

 

Stefano di Giovanni BiografiKelahiran1392 Siena Kematian1r April 1450 (57/58 tahun)Siena KegiatanSpesialisasiSeni lukis Pekerjaanpelukis AliranSienese School MuridSano di Pietro dan Giovanni Di Stefano Karya kreatifKarya terkenal(1430 (Kalender Masehi Gregorius)) Madonna and Child with Angels, St. Peter, St. John The Baptist, St. Paul and St. Francis: The Story of the founding of the Basilica of Santa Maria Maggiore in Rome(1434 (Kalender Masehi Gregorius)) Virgin with Child and Four Saints(1...

Terms that denote two groups of countries Not to be confused with Northern Hemisphere or Southern Hemisphere. Economic classification of the world's countries by the UNCTAD: the Global North (i.e., developed countries) is highlighted in blue and the Global South (i.e., developing countries and least developed countries) is highlighted in red.[1][2] Global North and Global South are terms that denote a method of grouping countries based on their defining characteristics with re...

 

Pour les articles homonymes, voir ADD. Aéroport d'Addis-Abeba Boleአዲስ አበባ ቦሌ ዓለም አቀፍ አውሮፕላን ማረፊያ Vue du terminal principal Localisation Pays Éthiopie Ville Addis-Abeba Coordonnées 8° 58′ 40″ nord, 38° 47′ 58″ est Altitude 2 334 m (7 656 ft) Informations aéronautiques Code IATA ADD Code OACI HAAB Type d'aéroport Civil Pistes Direction Longueur Surface 07/25 3 800 m (12 467 ft) Asph...

 

  「俄亥俄」重定向至此。关于其他用法,请见「俄亥俄 (消歧义)」。 俄亥俄州 美國联邦州State of Ohio 州旗州徽綽號:七葉果之州地图中高亮部分为俄亥俄州坐标:38°27'N-41°58'N, 80°32'W-84°49'W国家 美國加入聯邦1803年3月1日,在1953年8月7日追溯頒定(第17个加入联邦)首府哥倫布(及最大城市)政府 • 州长(英语:List of Governors of {{{Name}}}]]) •&...

此條目可能包含不适用或被曲解的引用资料,部分内容的准确性无法被证實。 (2023年1月5日)请协助校核其中的错误以改善这篇条目。详情请参见条目的讨论页。 各国相关 主題列表 索引 国内生产总值 石油储量 国防预算 武装部队(军事) 官方语言 人口統計 人口密度 生育率 出生率 死亡率 自杀率 谋杀率 失业率 储蓄率 识字率 出口额 进口额 煤产量 发电量 监禁率 死刑 国债 ...

 

1943 mutiny of American servicemen Battle of Bamber BridgePart of Second World WarYe Olde Hob Inn, where the violence startedDate24–25 June 1943LocationBamber Bridge, Lancashire, England, United Kingdom53°43′18″N 2°39′44″W / 53.7217°N 2.6621°W / 53.7217; -2.6621Caused byRacial tensionsParties 34th US Military Police Company 1511th Quartermaster Truck Regiment CasualtiesDeath(s)1Injuries7Charged32, charged with mutinyLocation of Bamber BridgeShow map of La...

 

Part of a series on the History of Italy Early Prehistoric Italy Nuragic civilization (18th–3rd c. BC) Etruscan civilization (12th–6th c. BC) Magna Graecia (8th–3rd c. BC) Ancient Rome Kingdom (753 BC–509 BC) Republic (509 BC–27 BC) Roman expansion in Italy Roman Italy Populares and Optimates Empire (27 BC–286 AD) Western Empire (286 AD–476 AD) Praetorian prefecture of Italy Romano-Barbarian Kingdoms Odoacer's 476–493 Ostrogothic 493–553 ...

NaskahUncial 027Fragmen memuat teks Lukas 9:23Fragmen memuat teks Lukas 9:23NamaNitriensisTandaRTeksInjil Lukas †Waktu~550 MAksarabahasa YunaniDitemukan1842Kini diBritish Library, Add. 17211Ukuran29,5 cm kali 23,5 cmJenisTeks BizantinKategoriV Codex Nitriensis diberi kode R atau 027 (dalam penomoran Gregory-Aland), ε 22 (dalam penomoran von Soden), adalah sebuah naskah uncial kuno berisi bagian Perjanjian Baru dari Alkitab Kristen dalam bahasa Yunani Koine. Memuat Kitab-kita...

 

هذه المقالة هي جزء من سلسلةالتجارة الإلكترونية السلع والخدمات عبر الإنترنتكتب إلكترونيةبرمجياتبث حي خدمات التجزئةالبنوكدي في دي البريدتوصيل الأزهارطلب الطعامالبقالةالصيدليةالسياحة خدمات السوقإعلاناتمزاداتمقارنة السعرالتجارة الاجتماعيةالتداولمحفظة إلكترونية التج...

 

Genus of flowering plants Picramnia Picrama glazioviana Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Eudicots Clade: Rosids Order: Picramniales Family: Picramniaceae Genus: PicramniaSw. (1788)[1] Type species Picramnia antidesma [1]Sw. Synonyms[2] Brasiliastrum Lam. (1785) Casabitoa Alain (1980) Gumillea Ruiz & Pav. (1794) Pseudo-brasilium Plum. ex Adans. (1763) Tariri Aubl. (1775) Picramnia, the bitterbushes,[3]...

Questa voce sull'argomento cestisti lituani è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Klaidas MetrikisNazionalità Lituania Altezza204 cm Peso104 kg Pallacanestro RuoloAla grande Squadra Free agent CarrieraGiovanili  Neptūnas Klaipėda Squadre di club 2018-2020→ Neptūnas-Akvaservis74 (549)2020-2022 Neptūnas Klaipėda44 (168)2022-2023 Prienai10 (43)2023Perlas Vilkaviškis5...

 

Place in Michoacán, MexicoJiquilpan SealNickname: Ciudad de las JacarandasMotto: Generamos Cultura y PatriotismoCoordinates: 19°35′N 102°26′W / 19.59°N 102.43°W / 19.59; -102.43CountryMexicoStateMichoacánFoundation (municipality)1831Government • TypeMunicipalityArea • Total242.13 km2 (93.49 sq mi)Elevation1,542 m (5,059 ft)Population • Total36,158 municipality (2,020)Time zoneUTC-6 (CST)&#...