当前位置: 首页 > news >正文

锁性能基准测试

Java Version: 17.0.5
CPU Cores: 16
测试配置: 1000000 次操作, 10 轮测试, 预热 5 轮

===== 测试: 同步实例方法 =====
线程数 1 | 耗时: 6 ms | 吞吐量: 166666666 ops/s
线程数 8 | 耗时: 87 ms | 吞吐量: 11494252 ops/s
线程数 100 | 耗时: 84 ms | 吞吐量: 11904761 ops/s

===== 测试: 同步静态方法 =====
线程数 1 | 耗时: 5 ms | 吞吐量: 200000000 ops/s
线程数 8 | 耗时: 61 ms | 吞吐量: 16393442 ops/s
线程数 100 | 耗时: 68 ms | 吞吐量: 14705882 ops/s

===== 测试: 同步代码块(this) =====
线程数 1 | 耗时: 5 ms | 吞吐量: 200000000 ops/s
线程数 8 | 耗时: 63 ms | 吞吐量: 15873015 ops/s
线程数 100 | 耗时: 79 ms | 吞吐量: 12658227 ops/s

===== 测试: 专用锁对象 =====
线程数 1 | 耗时: 5 ms | 吞吐量: 200000000 ops/s
线程数 8 | 耗时: 70 ms | 吞吐量: 14285714 ops/s
线程数 100 | 耗时: 70 ms | 吞吐量: 14285714 ops/s

===== 测试: ReentrantLock =====
线程数 1 | 耗时: 9 ms | 吞吐量: 111111111 ops/s
线程数 8 | 耗时: 14 ms | 吞吐量: 71428571 ops/s
线程数 100 | 耗时: 18 ms | 吞吐量: 55555555 ops/s

===== 测试: StampedLock(写锁) =====
线程数 1 | 耗时: 9 ms | 吞吐量: 111111111 ops/s
线程数 8 | 耗时: 12 ms | 吞吐量: 83333333 ops/s
线程数 100 | 耗时: 19 ms | 吞吐量: 52631578 ops/s

===== 测试: StampedLock(乐观读) =====
线程数 1 | 耗时: 11 ms | 吞吐量: 90909090 ops/s
线程数 8 | 耗时: 16 ms | 吞吐量: 62500000 ops/s
线程数 100 | 耗时: 19 ms | 吞吐量: 52631578 ops/s

===== 测试: 分段锁 =====
线程数 1 | 耗时: 6 ms | 吞吐量: 166666666 ops/s
线程数 8 | 耗时: 43 ms | 吞吐量: 23255813 ops/s
线程数 100 | 耗时: 40 ms | 吞吐量: 25000000 ops/s

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.StampedLock;public class LockPerformanceBenchmark {// 测试配置private static final int TOTAL_OPERATIONS = 1_000_000;private static final int WARMUP_ROUNDS = 5;private static final int TEST_ROUNDS = 10;private static final int[] THREAD_COUNTS = {1, 8, 100}; // 无竞争/低竞争/高竞争public static void main(String[] args) throws Exception {System.out.println("Java Version: " + System.getProperty("java.version"));System.out.println("CPU Cores: " + Runtime.getRuntime().availableProcessors());System.out.println("测试配置: " + TOTAL_OPERATIONS + " 次操作, " +TEST_ROUNDS + " 轮测试, 预热 " + WARMUP_ROUNDS + " 轮");// 测试所有实现benchmark("同步实例方法", new SynchronizedMethodTest());benchmark("同步静态方法", new SynchronizedStaticTest());benchmark("同步代码块(this)", new SynchronizedBlockTest());benchmark("专用锁对象", new DedicatedLockTest());benchmark("ReentrantLock", new ReentrantLockTest());benchmark("StampedLock(写锁)", new StampedLockWriteTest());benchmark("StampedLock(乐观读)", new StampedLockOptimisticTest());benchmark("分段锁", new SegmentLockTest());System.out.println("\n测试完成!");}private static void benchmark(String name, LockTest test) throws Exception {System.out.println("\n===== 测试: " + name + " =====");// 预热for (int i = 0; i < WARMUP_ROUNDS; i++) {test.runTest(8, TOTAL_OPERATIONS/8);}// 正式测试for (int threadCount : THREAD_COUNTS) {long totalTime = 0;for (int i = 0; i < TEST_ROUNDS
http://www.dtcms.com/a/328290.html

相关文章:

  • 石英加速度计如何实现高精度测量?
  • 明远智睿T113-i核心板:工业设备制造领域的革新利器
  • 具身智能竞速时刻,百度百舸提供全栈加速方案
  • JVM性能调优技巧
  • Java集合学习之forEach()遍历方法的底层原理
  • 数据科学与计算:爬虫和数据分析案例笔记
  • 01数据结构-Kruskal算法
  • 破译真实感:渲染参数进阶指南——告别塑料感,唤醒材质生命力
  • 01. maven的下载与配置
  • ubuntu24下keychorn键盘连接不了的改建页面的问题修复
  • “生成式UI革命”:Tambo AI如何让你的应用“开口说话、动手搭界面” | 全面深剖、案例实践与未来展望
  • Seed-VC:零样本语音转换与扩散transformer
  • 08--深入解析C++ list:高效操作与实现原理
  • 从爬虫新手到DrissionPage实践者的技术旅程
  • 【IP查询】使用IP66(ip66.net)验证IP地址定位的准确率
  • 小智智能交互算法通过国家备案,视觉大模型引领AI应用新浪潮
  • 机器学习之TF-IDF文本关键词提取
  • 终端安全检测与防御技术
  • 数据结构:中缀到后缀的转换(Infix to Postfix Conversion)
  • 【速通版!语义通信基础与前沿学习计划】
  • C++中类之间的关系详解
  • AR巡检:三大核心技术保障数据准确性
  • Langchain入门:构建一个PDF摄取和问答系统
  • 51 单片机分层架构的模块依赖关系图
  • 解决ROS编译顺序不对,需要内部依赖,因此要多次编译的问题
  • Python初学者笔记第二十二期 -- (JSON数据解析)
  • MySQL 数据库表操作与查询实战案例
  • 双十一美妆数据分析:洞察消费趋势与行业秘密
  • 机械臂的智能升维:当传统机械臂遇见Deepoc具身智能大模型从自动化工具到具身智能体的范式革命
  • Element用法---Loading 加载