性能优化 共 168 篇文章

Vue3 triggerRef手动触发shallowRef的响应式更新
2026-04-25 15:19:18
Vue3 triggerRef手动触发shallowRef的响应式更新 在 Vue 3 的响应式系统中,ref 和 reactive 是构建数据驱动视图的核心。然而,在处理大型数据结构或性能敏感场景时,Vue 3 提供了 shallowRef 和 shallowReactive 这样的“浅层响应式”
Vue3 响应式 浅层响应式
76 0
Go语言逃逸分析:变量何时分配在堆上而非栈上
2026-04-25 00:19:27
Go语言逃逸分析:变量何时分配在堆上而非栈上 理解 Go 语言的逃逸分析是编写高性能代码的关键。Go 编译器会自动决定变量是分配在快速的栈上,还是需要垃圾回收(GC)管理的堆上。掌握这一机制,能有效减少 GC 压力,提升程序运行速度。 1. 理解核心机制:栈与堆的区别 在深入分析之前,需明确变量存储
Go语言 逃逸分析 内存分配
73 0
C++智能指针make_shared比直接new+shared_ptr好在哪
2026-04-24 23:28:22
C++智能指针makeshared比直接new+sharedptr好在哪 C++11 引入了智能指针来管理动态内存,std::sharedptr 是最常用的一种。但在创建 std::sharedptr 时,直接使用 new 和使用 std::makeshared 存在显著差异。以下是详细的对比分析与
C++ 智能指针 内存管理
86 0
MySQL Generated Always As表达式索引的使用技巧
2026-04-24 13:19:22
MySQL Generated Always As表达式索引的使用技巧 MySQL 5.7 引入了虚拟列功能,MySQL 8.0 进一步完善了函数索引的支持。利用 GENERATED ALWAYS AS 可以在不修改业务代码逻辑的前提下,将复杂的计算、函数调用或 JSON 字段提取逻辑固化为列,并直
MySQL 表达式索引 虚拟列
57 0
Python concurrent.futures.as_completed按完成顺序获取结果
2026-04-24 03:28:59
Python concurrent.futures.ascompleted按完成顺序获取结果 在并发编程中,处理批量任务(如网络请求、文件读写或复杂计算)时,通常会遇到两个核心需求:一是加速执行(利用多线程或多进程并行),二是实时处理结果(谁先跑完先处理谁)。concurrent.futures.a
Python 并发编程 多线程
75 0
Java JIT编译器的热点代码优化与逃逸分析
2026-04-23 20:18:57
Java JIT编译器的热点代码优化与逃逸分析 Java 程序在运行初期通常较慢,但随着时间的推移,速度会显著提升。这种性能飞跃的核心机制在于即时编译器(JIT)及其对热点代码的深度优化。理解并利用这一机制,能让你写出性能极致的 Java 代码。 1. 理解 JIT 编译与热点代码 Java 代码首
Java JIT编译器 性能优化
60 0
Java LongAdder在高并发计数场景下的分段锁优化
2026-04-23 04:25:28
Java LongAdder在高并发计数场景下的分段锁优化 在并发编程中,统计计数(如点击量、请求数)是极其常见的需求。JDK 8 之前,我们通常使用 AtomicLong 或 synchronized 来实现线程安全计数。然而,在极高的并发场景下,这两种方案都会遇到性能瓶颈。LongAdder 是
Java LongAdder 高并发
68 0
JavaScript setTimeout最小延迟为什么是4ms
2026-04-22 17:25:50
JavaScript setTimeout最小延迟为什么是4ms 理解 setTimeout 的基本工作机制。setTimeout 是JavaScript中用于延迟执行代码的函数,它接受两个参数:要执行的函数和延迟时间(毫秒)。看似简单,但背后隐藏着浏览器的优化机制。 为什么最小延迟是4ms 发现
JS定时器 延迟机制 浏览器优化
80 0
Go语言runtime.GOMAXPROCS对Goroutine并行度的影响
2026-04-22 15:17:18
Go语言runtime.GOMAXPROCS对Goroutine并行度的影响 理解GOMAXPROCS的基本概念 理解 runtime.GOMAXPROCS 是Go语言中控制并行度的关键参数。这个函数决定了Go程序同时运行多少操作系统线程来执行用户代码。默认情况下,GOMAXPROCS 的值等于逻辑
Go语言 GOMAXPROCS 并行处理
50 0
C++ constexpr函数在编译期与运行期的执行边界
2026-04-22 11:17:01
C++ constexpr函数在编译期与运行期的执行边界 理解 C++11引入的constexpr函数是现代C++编程的重要特性,它允许函数在编译期计算结果,提高程序运行效率。但constexpr函数并非总是在编译期执行,其执行边界由多种因素决定。 编译期执行条件 检查 constexpr函数在以下
C++ constexpr 编译期
52 0
JavaScript原型链查找为什么会有性能开销
2026-04-22 10:22:36
JavaScript原型链查找为什么会有性能开销 JavaScript 的原型链机制是实现继承和属性共享的核心方式,但在高频访问属性的场景下,深层或不规范的链式查找会带来显著的性能损耗。理解其背后的原因并掌握优化方法,是编写高性能代码的关键。 1. 理解属性查找的基本机制 在 JavaScript
JS 原型链 性能优化
55 0
Java Full GC频繁触发的排查思路:从JVM参数到代码优化
2026-04-22 05:19:45
Java Full GC频繁触发的排查思路:从JVM参数到代码优化 当生产环境的服务出现CPU飙升、接口响应超时,且监控告警提示频繁Full GC时,意味着系统正处于由于内存回收导致的停顿风险中。Full GC会暂停所有应用线程(StopTheWorld),导致系统在此时无法处理任何请求。为了快速定
Java FullGC JVM调优
80 0
MySQL Count(*)、Count(1)、Count(列名)的性能差异真相
2026-04-21 21:26:28
MySQL Count、Count1、Count列名的性能差异真相 在数据库优化和面试中,关于 COUNT 的讨论从未停止。许多开发者为了追求极致性能,会在写 SQL 时纠结是用 COUNT 还是 COUNT1,甚至有人认为 COUNT1 比 COUNT 更快。这些说法在现在的 MySQL 版本中大
MySQL 性能优化 Count函数
74 0
Java CompletableFuture.supplyAsync的默认线程池陷阱
2026-04-21 13:21:28
Java CompletableFuture.supplyAsync的默认线程池陷阱 在Java后端开发中,为了提高接口响应速度,常使用 CompletableFuture.supplyAsync 进行异步编排。然而,若使用不当,这个看似简便的API会成为系统性能的“隐形杀手”。当系统在高峰期出现莫
Java 并发编程 线程池
81 0
C++ consteval立即函数强制编译期求值的应用
2026-04-21 12:13:57
C++ consteval立即函数强制编译期求值的应用 consteval 是 C++20 引入的关键字,用于修饰“立即函数”。它的核心作用是强制编译器在编译阶段计算函数的结果,如果无法在编译期完成求值,编译将直接报错。这比 constexpr 更为严格,能够确保代码的绝对性能,并将计算压力从运行时
C++ C++20 立即函数
83 0
Vue3 Vapor Mode无虚拟DOM编译模式的性能提升
2026-04-21 03:18:04
Vue3 Vapor Mode无虚拟DOM编译模式的性能提升 Vue3 的 Vapor Mode 是一种全新的编译策略,旨在通过抛弃传统的虚拟 DOM(Virtual DOM)机制,进一步提升框架的运行时性能。与传统的 Vue 3 模式相比,Vapor Mode 在编译阶段做更多的工作,生成更高效、
Vue3 Vapor模式 无虚拟DOM
80 0
Vue3 watch的deep选项监听嵌套对象变化的性能开销
2026-04-20 23:28:03
Vue3 watch的deep选项监听嵌套对象变化的性能开销 在 Vue3 开发中,监听嵌套对象的变化是一个常见需求。许多开发者习惯性地给 watch 函数添加 deep: true 选项。虽然这能解决问题,但它往往带来巨大的性能开销,特别是在数据结构庞大或层级较深时。当对象发生变化,Vue 必须递
Vue3 watch deep选项
81 0
Go语言sync.Map的read与dirty双map结构设计
2026-04-20 16:26:17
Go语言sync.Map的read与dirty双map结构设计 在Go语言中,并发安全的数据结构一直是开发者关注的问题。sync.Map作为标准库提供的并发安全map实现,其核心创新在于read与dirty双map结构设计。这种设计巧妙地平衡了读多写少场景下的性能问题。 1. 背景与问题 在Go 1
Go语言 sync.Map 并发安全
63 0
Go语言Goroutine泄漏的五种常见原因与pprof排查
2026-04-20 06:27:08
Go语言Goroutine泄漏的五种常见原因与pprof排查 Goroutine 泄漏是 Go 语言开发中导致内存占用持续飙升的最常见原因之一。当一个 Goroutine 被创建却无法退出,它占用的栈内存和堆内存引用将永远无法被垃圾回收器回收。本文将直接介绍如何使用 pprof 工具定位泄漏,并剖析
Go语言 协程 泄漏
82 0
MySQL查询缓存被移除的原因与应用层缓存替代方案
2026-04-20 04:28:22
MySQL查询缓存被移除的原因与应用层缓存替代方案 MySQL 8.0 彻底移除了查询缓存功能。这并非失误,而是基于性能权衡的必然选择。以下是深入解析其移除原因,以及在应用层构建高效缓存的实操方案。 1. 为什么 MySQL 移除了查询缓存 MySQL 的查询缓存机制简单粗暴:服务器收到 SELEC
MySQL 查询缓存 MySQL8.0
66 0