程序性能调优教程

     

SigNoz:开源微服务性能监控工具

1773 1

SignNoz是一个开源应用性能监控(APM)和可观测性工具,它帮助开发人员监控他们的应用程序和解决问题,是DataDog、NewRelic等的开源替代品。监视你的应用,并可排查已部署应用中的问题,这.

服务网格性能评估:Istio、Linkerd、Kuma 和Consul比较

2388 1 3K
现代应用程序通常由大量微服务组成,这些微服务在本地和云中分布的容器中运行。在这种情况下,服务网格是解决这些分布式微服务的安全性、连接性和可观察性挑战的基础设施层。但是,额外的组件层(来自 Mesh 基.

Java并发编程Bug:ThreadLocal已用完但未清除

923 2K

在Java中,有许多技术可以确保线程安全。你可以使用synchronized和Lock等关键字来锁定代码块。但它们有一个共同的特点,那就是锁定会对代码的性能产生一定的损失。其实,JDK中还提供了另一种.

大键如何影响Redis的持久性? - Xu

790

当我们开启 AOF 持久化有三种模式: 1、Always - 每当内存中有数据更新时,同步写入数据到磁盘。 2、EverySec - 每秒写入磁盘。 3、No - Redis 不控制何时将数据写入磁盘.

JVM中CPU瓶颈查找方法

1537 1

提醒你:如果你要对CPU瓶颈进行分析,不要依赖JVM FLIGHT RECORDER (JVM飞行记录仪)方法的分析。一点 用也没有!应该: 使用`async-profiler`进行分析(`-e cp.

你应该知道的延迟数字

2218

请注意,这些不是准确的数字。它们基于一些在线基准(Jeff Dean 的延迟数字 + 一些其他来源)。 L1 和 L2 高速缓存:1 ns、10 ns例如:它们通常内置在微处理器芯片上。除非您直接使用.

DoorDash高流量网页性能优化的经验教训

2888 1 11K
随着电子商务平台的发展,DoorDash 的 Web 应用程序开始变慢,并且需要提高性能的技术来保持它们的速度和功能。在 DoorDash,随着 Web 应用程序的扩展,用户有时不得不等待长达 10 .

JVM外部调试工具:JMXTerm

1083 6K

JMX 公开了管理“bean”(MBean),这些是表示应用程序中控制点的对象。您的应用程序可以发布自己的 bean,这让您可以公开运行时监控和配置的功能。这非常酷,因为您可以导出管理员可以直接连接到.

Java的类加载性能问题及解决办法 - DZone

1168 4K

Java在调用 Classloader.loadclass() 时线程会被阻塞,看它的源代码。下面是 ClassLoader.loadClass() 方法的源代码摘录。如果您想查看完整的源代码java.

Proebsting定律:编译器每18年只将计算能力提升一倍

960

我声称下面这个简单的实验支持这个令人沮丧的说法:用你最喜欢的最先进的优化编译器运行你最喜欢的一组基准测试。在启用和未启用优化功能的情况下运行这些基准。这些数字的比率代表了编译器优化对加速这些基准测试的.

JDK 18 GC垃圾回收机制比较

1791 1
从 JDK 18 开始,JDK 附带了四个垃圾收集器 (GC);串行 GC、并行 GC、G1 GC 和 ZGC。在大多数情况下,默认的 GC G1 GC 将是最佳选择。但是,了解 GC 的设计目标可能.

JVM c1、c2 编译线程——CPU 消耗高?

1706 3K

c1, c2编译器线程是由Java虚拟机创建的,以优化你的应用程序的性能。偶尔,这些线程会倾向于消耗高CPU。在这篇文章中,让我们了解更多关于c1、c2编译器线程的情况,以及如何解决它们的高CPU消耗.

Java UUID生成的性能影响 – fastthread

2045 1 3K

Java 开发人员倾向于使用“java.util.UUIDrandomUUID()” API 来生成 UUID(通用唯一标识符)编号(即“b8bbcbed-ca07-490c-8711-5118ee0.

罗伯-派克的5条编程规则:数据高于算法

1164

罗伯-派克(Rob Pike)是Go编程语言的设计者之一,也是贝尔实验室Unix团队的核心成员(他与Brian Kernighan合著了《Unix编程环境》)。他还因其5条编程规则而闻名:你无法知道一.

Lilliput:将Java对象头减为64位的里程碑版本发布

1072

在64位Hotspot中,Java对象有一个128位的对象头:一个64位的多用途头("标记 "或 "锁定")字和一个64位的类指针。(正常Java 堆中的对象头是96 位,使用 -XX:-UseCom.

Java大型数据集合实现并行加速处理几种方法 - DZone

1323 2 8K

在这篇文章中,一个非常简单的转换操作将被应用于一个大型的Java数据集合。转换操作对于转换操作,我们定义了一个函数接口。它只是接收一个R类型的元素,应用一个转换操作,并返回一个S类型的转换对象。@Fu.

使用Go泛型将Google的B-Tree性能提升40%

991

有很多理由对 Go 中的泛型感到兴奋。在这篇博文中,我将展示如何使用泛型,在已经优化好的包Google B-Tree实现中获得 40% 的性能提升。B树是一种自平衡树。就这篇博文而言,说它是一个集合就.

Java出现一个新的GC:​​​​​​​LXR

1319 1

LXR是一种基于引用计数的新 Java 垃圾收集器,一种新的低延迟、高吞吐量的垃圾回收器。该文在OpenJDK 11(当时的LTS)中构建了LXR,与现有G1、Shenandoah和ZGC等回收器进行.

多核+一个JVM比单核+多个JVM启动更快

803

在6核容器运行一个JVM会比在1核容器上运行6个JVM启动得快拥有更多资源的更少 JVM 比拥有更少资源的更多 JVM 更好。即使 CPU 和 RAM 的总量保持不变。这对一切都有好处:启动时间、尾部.

OpenJDK的“CRaC检查点协调恢复” - foojay

1311 2 3K

Java如何协调代码的快速启动和实时优化两者之间平衡?Java虚拟机(JVM)的一个伟大之处在于,它能够使Java应用程序的性能适应其使用方式。它可以找出你的代码中哪些部分是经常使用的,然后通过其及时.

Java中hashcode和equals性能注意点 - Shai

1099 1 5K

几周前,我 在 reddit 上遇到了这个故事, 它讨论了在 Map 中使用 URL 类作为键的问题。这归结为java.net.URL中 hashcode() 方法的实现非常缓慢,这使得此类在这种情况.

仅供Go使用的gob比JSON性能提高80倍 - ksred

1665 2K

我们主要产品是股票交易规则引擎:策略是你创建的一套股票或加密货币的规则,这个引擎会跟踪你创建的策略中所做的所有交易,从中你可以看到哪些交易效果好,哪些交易效果不好,你每天都会收到一封包含交易机会的电子.

Java中String.format变得更快 - Miloš

1270 1

从 JDK17 开始String#format对于简单的场景具有更好的性能。不要在简单的场景中避免它。对于复杂的场景,它仍然几乎与以往一样慢。 Java 8 早期的默认值concat确实执行得有点慢。.

使用Java 18的Vector API提高性能 - martin

1721 3K

Java Vector API 为现代 CPU 的数据并行功能提供了一个抽象层。由于不同的处理器架构有不同的风格,因此没有简单的解决方案来利用软件中特定于平台的功能。通常需要以特定于平台的方式编写代码.

DB面试问题:单条记录的大量查询 - Reddit

787

有一个表存储了所有用户的余额信息。而很大一部分select和更新查询都与一条记录有关(例如,公司账户余额/一个机构用户经常进行交易),因此这些查询需要一个接一个地执行。你能做些什么来提高这些查询的性能.

如何将PostgreSQL查询优化100倍 - Vadim

3040

用来加快PostgreSQL中SELECT-s的一些技巧:带有冗余条件的LEFT JOIN、VALUES、扩展统计、主键类型转换、CLUSTER、pg_hint_plan LEFT JOIN 的隐藏优.

Linux中的getrandom()方法性能提高了8450% - Phoronix

1109

Linux 内核的随机数生成器代码最近在 WireGuard 成名的 Jason Donenfeld 领导下取得了许多改进。在 Linux 5.17中,随机代码中的 SHA1 被替换为 BLAKE2,.

Hive性能调优实践 - Vidhya

1317 5K

Apache Hive 是一个建立在 Hadoop 之上的数据仓库系统,它使用户能够灵活地以类似 SQL 的查询的形式编写复杂的 MapReduce 程序。性能调优是运行 Hive 查询的重要部分,因.

PostgreSQL RDS索引陷阱 - nanit

745 2K

提高 RDBMS 查询性能的最常见方法之一是根据查询的选定字段和条件添加索引。但有时索引可能会降低数据库性能而不是提高它。在这篇博文中,我将描述删除索引如何帮助我们提高性能并减轻 RDS 实例的负载。.

高性能Java不同格式的序列化Chronicle Wire

1761 3K

Java 序列化是一种流行的机制,您可以在其中序列化和反序列化复杂的对象图,Chronicle Wire是一个开源库,最初是为了支持 Chronicle Queue 和 Chronicle Map 而.