java奥运会安排赛程问题

开发人员:Takipi会告诉您何时新代码在生产中中断–

Log4J vs SLF4J简单vs Logback vs Java Util日志记录vs LOG4J2

日志记录实际上是每个服务器端应用程序中古老且固有的部分。 这是应用程序以持久且可读的方式输出实时状态的主要方法。 某些应用程序每天可能仅记录几兆字节,而其他应用程序可能会在数小时内记录千兆字节或更多的数据。

由于日志记录通常涉及IO将数据写入磁盘(阻塞或异步)–因此需要付出一定的代价。 在短时间内记录大量数据时,该成本会Swift增加。 我们决定更深入地研究当今一些领先的日志记录引擎的速度。

大多数开发人员记录数据的原因主要有以下三个:

  1. 监视 –查看代码在吞吐量,规模,安全性等方面的行为。
  2. 调试 –访问导致代码失败的状态(变量,堆栈跟踪…)。 Takipi帮助开发人员调试登台服务器和生产服务器,并了解代码崩溃和线程冻结的原因。
  3. 分析 –利用应用程序中的实时数据来得出有关其使用方式的结论。

在立面的后面 。 如今,大多数库都在代码的关键点内置了日志,以提供对其操作的可见性。 为了简化此过程并防止不同的库在同一JVM中采用多种日志记录方法,将代码与底层引擎分离的日志记录Facade成为最重要的问题。 当我们分析Java的前100个软件库时 ,SLF4J成为当今开发人员使用的主要日志记录界面。

竞赛

我们决定选择五个当今最杰出的测井引擎,并观察它们在许多比赛中的表现。 现在,在取出割炬和干草叉之前,我想说明的并不是要说哪个更好,而是要了解在许多常见的日志记录任务中引擎之间的吞吐量差异。

参赛者

  1. Log4J
  2. Log4J2
  3. 退回
  4. SLF4J简单记录(SLF4J SL)
  5. Java Util记录(JUL)

种族

我们想看看引擎如何比较一组标准的日志记录活动。 每个日志记录操作都包括一个时间戳和一个线程ID作为其上下文。

这些是种族:

  1. 记录字符串常量
  2. 记录POJO的.toString()值
  3. 记录可抛出对象
  4. 记录没有时间/ tid上下文的字符串常量

轨道

我们决定为每场比赛举行五次预赛,以确定最佳成绩,衡量完成的伐木作业次数。 在每个测试中,我们都给日志记录引擎一个任务,使其在一分钟内跨10个线程执行(测试分别运行)。 然后,我们取出偏差最大的2个加热点,并对其余3个结果取平均值。

在每个单独的日志记录操作之间,我们给CPU做一些工作来在日志记录操作之间放置一些空间(检查是否有小的随机数是素数)。 引擎均使用其默认配置在SLF4J后面运行。 基准测试是在Amazon m1.large EC2实例上运行的。

结果

要查看完整的数据集– 单击此处 。

第1场–字符串常量

在这场比赛中,引擎正在记录一个字符串常量以及线程和时间戳上下文。 Log4J在这里无疑是赢家,能够写的行数比JUL多了270%,比logback多了12.5%,比SLF4J SL多了52%。 值得注意的是,在更改Log4J2的配置之前,可以少写入4X(!)行,而swtich将其提升为#3,而写入的行数仅比logback少30%。

第2场– .toString()

在这场比赛中,引擎正在记录POJO(通过其.toString)以及线程和时间戳上下文。 Log4J2排在第一位,与SLF4J SL排在第二位相比,具有25%的优势(变更后),这里的结果更加接近。 Log4J和Logback在#3点上并驾齐驱,JUL以SLF4J SL的88%吞吐率获得白银。

第三场比赛-投掷

在这场比赛中,引擎正在记录异常对象和描述字符串以及线程和时间戳上下文。 在此竞赛中,Log4J2着火了,与#5的SLF4J SL相比,在#1处记录的行数是行的3倍(!)多。

Log4J和Logback也被遗忘了,记录的次数不到我们尊敬的获胜者的一半。 7月排在第二名,与我们的获胜者相比,记录了82%的比赛成绩-不错。

第4场比赛(赤脚跑步)– .toString()减去上下文

处理服务器日志时,每个条目的上下文(例如线程ID,类上下文,时间戳等)几乎与条目本身的内容一样重要。 在以前的比赛中,我们使用了在大多数服务器日志条目中可以找到的两个最常见的上下文元素-线程ID和时间戳。 我们认为通过运行.toString()竞赛而不使用任何引擎的上下文附加程序来分析这些开销非常有趣。

Log4J2是这里的赢家(更改会议后,可获得180%的提升),Logback和JUL的领先优势明显为25%。 SLF4J SL紧随其后。 令人困惑的是,在5个不同的加热条件下,SLF4J SL使用添加器的效果要好于不使用添加器的效果(希望您能在评论中听到您的想法)。

Log4J的最大突破是吞吐量增加了15%。 尽管在竞争中,JUL的性能不如Log4J或Log4J2,但无论有没有上下文数据,JUL都能提供几乎完全相同的结果。

我很想听听您的意见和建议。

  • 您也可以在GitHub上签出代码。
参考: The Logging Olympics –在我们的Jaki 合作伙伴 Tal Weiss的Takipi博客上, 探讨了 当今最重要的5种Java日志记录框架之间的竞赛 。

翻译自: https://www.javacodegeeks.com/2013/12/the-logging-olympics-a-race-between-todays-top-5-java-logging-frameworks.html

java奥运会安排赛程问题

java奥运会安排赛程问题_记录奥运-当今五大Java记录框架之间的竞赛相关推荐

  1. 记录奥运-当今五大Java记录框架之间的竞赛

    开发人员:Takipi会告诉您何时新代码在生产中中断– Log4J vs SLF4J简单vs Logback vs Java Util日志记录vs LOG4J2 日志记录实际上是每个服务器端应用程序中 ...

  2. java护照号码校验_学无止境之小白学java……第001天

    学习主题:预科阶段 对应视频: http://www.itbaizhan.cn/course/id/18.html 对应作业: 1. 为什么需要学编程,什么样的人可以做程序员? 编程是现实逻辑的表达, ...

  3. java青蛙过河打字_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

  4. java排序算法总结_排序算法总结及Java实现

    1. 整体介绍 分类 排序大的分类可以分为两种,内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.主要需要理解的都是内排序算法: 内排序可以分为 ...

  5. java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...

  6. 与Java的初吻_ The First Kiss On Java

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 初探对话 The First Exploration Foreword 前语 一.请你喝一杯Java咖啡 二.与JAVA的初次遇见 1 ...

  7. java新手练习项目_有哪些好的java项目适合新手练习?

    要想学好java技术,找到高薪工作,不仅要掌握扎实的理论知识,也要有一定的实操能力. 遇到问题多查多问,可以上网站进行搜索,可以加一些交流群,还可以多问学校的老师--另外要学会欣赏他人的代码,向成功者 ...

  8. java面试题成都_成都汇智动力-java面试——多线程面试题

    原标题:成都汇智动力-java面试--多线程面试题 1.多线程有什么用?发挥多核CPU的优势 防止阻塞 便于建模 2.创建线程的方式继承Thread类 实现Runnable接口 至于哪个好,不用说肯定 ...

  9. java 鸢尾花分类算法_鸢尾花分类算法实现 java

    使用的贝叶斯分类算法实现的,编程语言为java.是我本学期修的数据库与数据挖掘的课程的期末课程作业,算法本身不难,思路理清楚了很简单. 先看看鸢尾花(Iris)数据集(下图为数据集的部分截图),鸢尾花 ...

最新文章

  1. 用VLC读取摄像头产生RTSP流,DSS侦听并转发(二)
  2. linux安装x11鼠标主题
  3. Bugly符号化iOS 崩溃,快速定位crash(上传符号表)
  4. vue-cli 3.0安装和使用
  5. spring boot 日志乱码_3. Spring Boot日志
  6. 通过radius给ppp客户端分配ip地址
  7. 9277用计算机,【资料】[转]鸿合电子白板学科通用工具使用技巧
  8. VMware vsphere 中创建虚拟机的方法
  9. redmin3 忘记管理密码找回方法
  10. python判断线程结束_判断Threading.start新线程是否执行完毕的实例
  11. python学习之路第四周汇总
  12. [HNOI2010]PLANAR
  13. 处理得怎么样填空词语_武都网络推广软件效果怎么样【易商网络】
  14. 实时 摔倒识别 /运动分析/打架等异常行为识别/控制手势识别等所有行为识别全家桶 原理 + 代码 + 数据+ 模型 开源!
  15. 高德地图:热力图、点位基础使用
  16. sop封装与dip封装的语音芯片有何区别?
  17. js三种消息框总结-警告框、确认框、提示框
  18. PDF提取图片(错误纠正)
  19. 路口待行区设置条件与通行效能分析
  20. 【PDF转换图片】如何把pdf文件转换成图片?如何把批量pdf文件转换成图片?如何把多目录批量pdf文件转换成图片?如何pdf文件转换成图片不失真不损失清晰度?今天教方法

热门文章

  1. 【DP】Bovine Genetics G(P7152)
  2. [XSY]Tree Ext(矩阵树定理,拉格朗日插值,最小生成树,二分)
  3. 洛谷 P1967货车运输 并查集+贪心 不需要用LCA!
  4. 29、jdbc操作数据库(6)
  5. LVS三种模式的区别及负载均衡算法
  6. Spring Bean 定义
  7. 【深入理解JVM】:类加载器与双亲委派模型
  8. java实现动态验证码源代码——jsp页面
  9. 西安理工大学计算机专业毕业,西安理工大学什么专业好找工作?毕业工资大概多少?答案在这里...
  10. 同步外部接口数据的一些记录和分享