Focused on a top-down approach, it covers the main layers where a software architect or performance engineer must be involved by revealing performance design principles, tactics, patterns, algorithms, strategies, operating system and hardware level optimizations. Each of these layers are detailed by offering suggestions and examples (including some performance tests) for the audience regarding what it really matters and what should be avoided when designing for performance. Main topics: - design principles (e.g. cohesion, polymorphism / abstractizations, cyclomatic complexity, algorithms complexity, etc) - tactics, patterns, algorithms, strategies (e.g. caching, batching, design asynchronous, non-blocking, memory access patterns, lock free algorithms, data structures, etc) - operating system (e.g. large pages, NUMA, thread affinity, RamFS/TmpFS, IO Scheduler, etc) - hardware (e.g. false sharing, C-states, Zero Bit Recording, Solid State Drive, CPU stalls, Cache misses, etc) Also few benchmark comparisons will be shared (e.g. IO Scheduler: cfg/ noop/dedline; HDD/SSD/RamFS, memory access patterns and BigO notation) in order to prove which approach is better.

Talk Level:
INTERMEDIATE

Bio:
Software Architect @ Luxoft with 10+ years of experience in a wide variety of business applications. Particularly interested in software architecture and performance & tuning topics. Regular speaker at external conferences (e.g. GeeCon, JokerConf, XP Days, Voxxed, Bucharest Java User Group, Logeek, SoftLabs, DevTalks, Agile Tour) and occasionally technical writer (InfoQ, DZone, etc).