程序性能调优教程

     

人工智能在现代软件架构设计中的作用

40 4K

软件架构自诞生以来已经取得了长足的进步。在早期,系统很简单,程序员经常对特定问题的解决方案进行硬编码。随着系统复杂性和规模的增长,这种方法变得难以管理。我们看到了结构化编程、面向对象编程以及最近的面向.

Java 22中三种垃圾回收GC性能获得了大提升

25 3K

 JDK 22 GA 即将到来,本文介绍该版本中 OpenJDK 的垃圾收集器GC的最新更改,主要是提升了效率和性能。 JDK 22 GA 这个版本在 stop-the-world 收集器领域提供了相.

Netflix使用ZGC实现低延迟

28

由于并发垃圾收集的显着优势,Netflix 在 JDK 21 及更高版本上默认从 G1 切换到分代 ZGC。超过一半的关键流视频服务现在都在带有 Generational ZGC 的 JDK 21 上.

数据库IO有多慢?

133 1

大多数资深开发人员一定都经历过数据库 I/O 性能相当低的情况。但很多人可能没有意识到 I/O 操作有多慢,特别是数据库 I/O 速度与其他数据读写方法的速度之间的差距。Java 是一种用于应用程序开.

Python中优化代码性能的最佳实践

42 2K

 Python 应用程序性能的首选策略是什么?无论是利用库、优化算法还是利用高级功能,下面是编写高效 Python 代码的技术见解和最佳实践:使用 functools.cache 或 functool.

Java中Valhalla项目提升近10倍性能

88 2K

Valhalla 项目是针对 JVM 性能的重要项目,旨在优化内存布局和提高性能。该项目旨在支持自定义“基元”或值对象的创建,以获得更好的内存局部性和更高的性能。在测试中,Valhalla 项目展现出.

Python中提升Pandas性能的5个技巧

55 16K

如果您曾经使用过表格数据,您可能知道这个过程:将数据导入 pandas,清理和转换它,并将其用作模型的输入。但是,当需要扩展并将代码投入生产时,您的 pandas 管道很可能开始崩溃并运行缓慢。提示 .

解决常见Java性能问题的6个技巧

192 10K

虽然 Java 的优势在于其平台独立性、强大的库和广泛的生态系统,但解决性能问题是充分利用其功能的关键。1.内存泄漏有人会问,既然 Java 通过垃圾回收器实现了自动内存管理,这怎么可能呢?的确,Ja.

算法复杂性分析中的渐近表示法和分析

74 3K

渐近分析中,我们根据输入大小评估算法的性能(我们不测量实际运行时间)。我们计算算法所花费的时间(或空间)如何随着输入大小的增加而增加。 渐近符号是一种根据输入大小描述算法的运行时间或空间复杂度的方法。.

十亿行挑战

300 2K

让我们开启 2024 年真正的编码风格 —​我很高兴宣布10 亿行挑战赛(1BRC),将于 1 月 1 日持续到 1 月 31 日。如果您决定接受的话,您的任务看似简单:编写一个 Java 程序,用于.

如何配置Nginx来降低TTFB实现低延迟?

105 2K

TTFB代表"Time To First Byte",中文意为"首字节时间"。它是指从浏览器发出一个HTTP请求到接收到服务器响应的第一个字节所经过的时间。TTFB是Web性能的关键指标之一,因为它反.

JDK21垃圾收集性能比JDK8快了10%

333

这篇文章主要介绍了JDK 21和其他版本的GC性能比较。作者通过使用SPECjbb® 20151基准测试来展示不同GC的性能提升。他比较了G1、Parallel和ZGC三种GC,发现它们在吞吐量、延迟.

Rust与Go中实现高性能解析JSON

217 7K

为了获得最佳性能,请尝试使用 Rust 或 Go。在这种使用情况下,它们的速度基本相当,它们都比 Java 快 4 倍,比 Python 快 6 倍。如果要解析 JSON 文件: 在 Go 中,使用 .

日志代码隐藏巨大性能陷阱

263 3 14K

场景:我们有一个记录器,它应该只记录特定级别的消息(例如,info和warn)error,但不记录低于它的消息(debug或trace)。在运行时的某个时刻,我们应该能够提高或降低阈值。一个简单的实现.

Go中切片slice的两种性能优化方法

61 2K

研究 Go 中的优化技术,优化一些似乎不太高效的最佳实践,主要是关于切片slice和映射map的。下面是我遇到的几个例子,作为开场白:1、在每次迭代时重新分配切片/映射: go for { queue.

为何苹果M1打败了英特尔?

321 4K

CISC与RISC有两种截然相反的芯片设计理念: CISC(复杂指令集计算机) RISC(精简指令集计算机) 要理解这一点,我们需要了解指令集的含义。CPU 每个时钟周期都在运行操作。这些操作包括在寄.

ReactJS前端性能优化6个小技巧

52

以下是一些提示优化图片和CSS/JS:大尺寸图片会降低扩展的运行速度。压缩图片并使用 WebP 等格式。实施懒加载,只在需要时加载图片。加速服务器请求:缓慢的服务器请求会成为性能瓶颈。使用缓存、CDN.

数据库连接池大小的调整原则

173 3K
配置连接池是开发人员经常犯的错误。配置池时需要理解几个原则(对于某些人来说可能违反直觉)。想象一下,您有一个网站,虽然可能不是 Facebook 规模的,但仍然经常有 10,000 个用户同时发出数据.

Rob Pike 的 5 条编程规则

112

Rob Pike 的 5 条编程规则强调简单性和衡量性,而不是过早的优化: 规则 1:你无法判断程序会在哪里耗费时间。瓶颈出现在令人吃惊的地方,因此在证明瓶颈所在之前,不要试图猜测并尝试快速破解。 规.

DoorDash 如何改进微服务缓存?

163 5K

随着 DoorDash 的微服务架构不断发展,服务间流量也在不断增长。每个团队管理自己的数据并通过 gRPC 服务公开访问权限,gRPC 服务是一个用于构建可扩展 API 的开源远程过程调用框架。由于.

量化交易好书和高频交易要点

64

以下是推荐的学习量化交易 Stats 的好书:1、统计学习要素(Elements of Statistical Learning)优点:统计学的圣经。全面而详细。必读。缺点:需要扎实的数学功底,对初学.

Java 并行 GC 调优

181 3K

并行垃圾收集器(Parallel GC)是 JVM 中引入的最古老的垃圾收集算法之一,旨在利用现代多核系统的处理能力。并行GC旨在通过利用多个线程并行执行垃圾收集来减少GC暂停的影响。什么时候使用并行.

OpenJDK使用Intel的x86-simd-sort将数据排序速度提高 7~15 倍

101

今年早些时候,英特尔发布了x86-simd-sort 作为使用 AVX-512 的超快排序库。当时流行的 Numpy 使用它时,他们发现 16 位到 64 位数据类型的排序速度提高了 10~17 倍。.

Java中Record比常规类快约 10%

117 4K

来自Oracle 的Java核心库开发人员: Hotspot VM 以特殊方式信任 Java 记录,与常规 Java 类相比,这使得它们的速度在某些方面更加优越。假设我们想要建模一个不可变点:publ.

用 Rust 编写一个非常快的Python linter

418 2K

Ruff 格式(https://github.com/astral-sh/ruff)是用于格式化 python 文件的新工具,它在底层使用了 ruff linter 的部分内容,这就是它创建如此之快并.

simdutf:每秒数十亿个字符的 Unicode 验证和转码

264 3K

大多数现代软件都依赖于Unicode 标准。在内存中,Unicode 字符串使用 UTF-8 或 UTF-16 表示。UTF-8 格式是网络上事实上的标准(JSON、HTML 等),并且已被许多流行编.

Java中使用Vector API实现 Base64编码/解码

208

该库包含使用孵化器 Vector API 实现的 Base64 编码器和解码器,以及(较慢的)标量实现。这是最快的 Java 编写的 Base64 库,基于向量和标量方法的性能均优于任何其他 Java.

用JBang一步生成Java性能火焰图

562 1 2K

火焰图是查找 Java 代码中的瓶颈和性能问题的绝佳工具。分析性能的一种常用技术是 火焰图。简而言之,火焰图是一种可视化代码的哪些部分消耗更多时间的技术。火焰图提供了两个有趣的提示:堆栈越高,代码中的.

OpenJDK微软版本默认启用增强型逃逸分析

272 1

OpenJDK 17.0.8 增强功能: 包括一个新功能(请参阅JDK-8287061和JDK-8289943),通过增加标量替换的机会数量来提高逃逸分析的性能。现在默认启用此功能。要禁用它,开发人员.

fury:由jit和零拷贝支持的超快序列化框架

800 3K

阿里alipay的Fury是一个极快的多语言序列化框架,由jit(即时编译)和零拷贝提供支持,提供高达 170 倍的性能和终极易用性。仅用于序列化通过使用fury将Java对象转换为字节流,您可以获得.