Code Analysis++https://www.meetup.com/St-Petersburg-CPP-User- Group/ ● C++ Russia: https://cppconf.ru/en/Why Code Analysis?Software QualityReadability Maintainability tools fuzzer battery life Repeatable tests Undefined Behavior – Fun with NULL pointers, part 1: https://lwn.net/Articles/342330/Why code analysis – ● Improve software quality ● Lower developer frustration ● Avoid UBLanguageLanguage helps Built-in compiler check ○ Current LLVM implementation gives 5% overhead ○ Annotations to help analysis: gsl::SharedOwner, gsl::Owner, gsl::Pointer void sample1() { int* p = nullptr; {0 码力 | 61 页 | 2.70 MB | 6 月前3
Spreadsheet Analysis using Atlassian Tools0 码力 | 1 页 | 120.37 KB | 5 月前3
Finding Bugs using Path-Sensitive Static AnalysisFinding Bugs using Path-Sensitive Static Analysis Gábor Horváth Gabor.Horvath@microsoft.com @XazaxHunWelcome to CppCon 2021! Join #visual_studio channel on CppCon Discord https://aka.ms/cppcon/discord latest announcements Take our survey https://aka.ms/cppconAgenda • Intro to path-sensitive static analysis • Path-sensitive checks in MSVC • A look under the hood • Upcoming features • Lessons learned2012 -> Unknown p -> Null p -> MaybeNull p -> MaybeNull Warning Unknown Null NotNull MaybeNull Analysis state Transition semi-lattice• Some paths are infeasible: • Not taking branch 1, but taking branch0 码力 | 35 页 | 14.13 MB | 6 月前3
Lifetime Safety in C++: Past, Present and Future= __range.end(); for(; __begin != __end; __begin++) { char c = *__begin; [...] } Lifetime analysis for everyone - Gábor Horváth & Matthias Gehre - CppCon 2019C++ is getting safer: P2718! string = __range.end(); for(; __begin != __end; __begin++) { char c = *__begin; [...] } Lifetime analysis for everyone - Gábor Horváth & Matthias Gehre - CppCon 2019 optionalmayReadInput(); for(char = __range.end(); for(; __begin != __end; __begin++) { char c = *__begin; [...] } Lifetime analysis for everyone - Gábor Horváth & Matthias Gehre - CppCon 2019 optional mayReadInput(); for(char 0 码力 | 124 页 | 2.03 MB | 6 月前3
julia 1.10.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 32.5 Memory allocation analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 32.6 External Profiling . . :displaysize => (24, 500))) end 32.4 Configuration @profile just accumulates backtraces, and the analysis happens when you call Profile.print(). For a long-running computation, it's entirely possible that time needed to take a backtrace (~30 microseconds on the author's laptop). 32.5 Memory allocation analysis One of the most common techniques to improve performance is to reduce memory allocation. Julia0 码力 | 1692 页 | 6.34 MB | 3 月前3
Julia 1.10.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 32.5 Memory allocation analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 32.6 External Profiling . . :displaysize => (24, 500))) end 32.4 Configuration @profile just accumulates backtraces, and the analysis happens when you call Profile.print(). For a long-running computation, it's entirely possible that time needed to take a backtrace (~30 microseconds on the author's laptop). 32.5 Memory allocation analysis One of the most common techniques to improve performance is to reduce memory allocation. Julia0 码力 | 1692 页 | 6.34 MB | 3 月前3
Julia 1.11.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 33.5 Memory allocation analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 33.6 External Profiling . . :displaysize => (24, 500))) end 33.4 Configuration @profile just accumulates backtraces, and the analysis happens when you call Profile.print(). For a long-running computation, it's entirely possible that backtrace (~30 microseconds on the author's laptop).CHAPTER 33. PROFILING 433 33.5 Memory allocation analysis One of the most common techniques to improve performance is to reduce memory allocation. Julia0 码力 | 2007 页 | 6.73 MB | 3 月前3
Julia 1.11.5 Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 33.5 Memory allocation analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 33.6 External Profiling . . :displaysize => (24, 500))) end 33.4 Configuration @profile just accumulates backtraces, and the analysis happens when you call Profile.print(). For a long-running computation, it's entirely possible that backtrace (~30 microseconds on the author's laptop).CHAPTER 33. PROFILING 433 33.5 Memory allocation analysis One of the most common techniques to improve performance is to reduce memory allocation. Julia0 码力 | 2007 页 | 6.73 MB | 3 月前3
Julia 1.11.6 Release Notes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 33.5 Memory allocation analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 33.6 External Profiling . . :displaysize => (24, 500))) end 33.4 Configuration @profile just accumulates backtraces, and the analysis happens when you call Profile.print(). For a long-running computation, it's entirely possible that backtrace (~30 microseconds on the author's laptop).CHAPTER 33. PROFILING 433 33.5 Memory allocation analysis One of the most common techniques to improve performance is to reduce memory allocation. Julia0 码力 | 2007 页 | 6.73 MB | 3 月前3
julia 1.13.0 DEV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 33.6 Memory allocation analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 33.7 External Profiling . . :displaysize => (24, 500))) end 33.4 Configuration @profile just accumulates backtraces, and the analysis happens when you call Profile.print(). For a long-running computation, it's entirely possible that significant num- ber of short-lived tasks in the system.CHAPTER 33. PROFILING 443 33.6 Memory allocation analysis One of the most common techniques to improve performance is to reduce memory allocation. Julia0 码力 | 2058 页 | 7.45 MB | 3 月前3
共 213 条
- 1
- 2
- 3
- 4
- 5
- 6
- 22













