java高频面试_C ++或Java,高频交易哪个更快?

java高频面试

总览

关于什么是高频交易的最佳解决方案,存在不同意见。 问题的一部分是高频交易的变化超出您的预期,另一部分是更快的含义。

我的看法

如果您有一个典型的Java程序员和一个典型的C ++程序员,并且每个人都有几年编写典型的面向对象程序的经验,并且给了他们相同的时间,那么Java程序员可能会更早地拥有一个工作程序,并且将拥有更多的工作时间。是时候调整应用程序了。 在这种情况下,Java应用程序可能会更快。 恕我直言。

以我的经验,Java在检测不需要执行的代码方面在C ++上表现更好。 esp微型基准测试,没有任何用处。 ;)如果您以任意专业知识和时间调优Java和C ++的能力,C ++程序将更快。 但是,由于资源有限且在不断变化的环境中,动态语言将无法运行。 即在实际应用中。

在股票空间延迟中,您需要将潜伏期定为10次以下才能使频率很高。 不能选择Java甚至商用硬件上的标准OOP C ++。 您需要C或C ++的简化版本以及诸如FPGA,GPU之类的专业硬件。

在FX中,高频意味着延迟小于100 us。 在这种情况下,可以选择使用C ++或带有内核旁路网络适配器的精简Java(低GC)。 在这种情况下,使用一种或另一种语言将有加有减。 就个人而言,我认为随着交流的不断变化,Java会提供更大的灵活性,前提是您认为可以利用IT获得竞争优势。

在许多情况下,当人们谈论高频(尤其是Banks)时,他们谈论的是1 ms以下或一位数ms。 在这个领域,我想说Java,Scala或C#等的灵活性/动态编程将给您时间,与C / C ++或FPGA相比,具有可维护性和可靠性方面的优势。


Java面临的问题

问题不在于语言本身,而是缺乏对缓存,上下文切换和中断的控制。 如果复制一块内存(发生在本机内存中,但是在运行之间使用了不同的延迟),则该副本会变慢,具体取决于副本之间发生的情况。

问题不是GC或Java,因为这两者都不起作用。 问题在于缓存的一部分已被换出,副本本身需要更长的时间。 这对于访问内存的任何操作都是相同的。 例如访问普通对象也将变慢。

private void doTest(Pauser delay) throws InterruptedException {int[] times = new int[1000 * 1000];byte[] bytes = new byte[32* 1024];byte[] bytes2 = new byte[32 * 1024];long end = System.nanoTime() + (long) 5e9;int i;for (i = 0; i < times.length; i++) {long start = System.nanoTime();System.arraycopy(bytes, 0, bytes2, 0, bytes.length);long time = System.nanoTime() - start;times[i] = (int) time;delay.pause();if (start > end) break;}Arrays.sort(times, 0, i);System.out.printf(delay + ": Copy memory latency 1/50/99%%tile %.1f/%.1f/%.1f us%n",times[i / 100] / 1e3,times[i / 2] / 1e3,times[i - i / 100 - 1] / 1e3);
}

测试多次执行相同的操作,但执行该测试之间的延迟有所不同。 该测试将大部分时间都用在本地方法上,并且没有像在测试期间那样创建或丢弃任何对象。

收益:复制记忆体延迟1/50/99%tile 1.6 / 1.6 / 2.3 us
NO_WAIT:复制内存延迟1/50/99%tile 1.6 / 1.6 / 1.6 us
BUSY_WAIT_10:复制内存延迟时间为1/50/99%tile 3.1 / 3.5 / 4.4 us BUSY_WAIT_3:复制内存延迟时间为1/50/99%tile 2.7 / 3.0 / 4.0 us BUSY_WAIT_1:复制内存延迟时间为1/50/99%tile 1.6 / 1.6 / 2.6 us SLEEP_10:复制内存延迟时间为1/50/99%tile 2.3 / 3.7 / 5.2 us SLEEP_3:复制内存延迟时间为1/50/99%tile 2.7 / 4.4 / 4.8 us SLEEP_1:复制内存延迟时间为1/50/99%tile 2.8 / 4.6 / 5.0 us

执行内存复制所需的典型时间(中间值)在1.6到4.6 us之间,这取决于是否有1到10毫秒的繁忙等待或睡眠时间。 这是大约3倍的比率,与Java无关,但是它并没有真正的控制权。 甚至最好的时间也相差约2倍。


代码

ThreadlatencyTest.java


结论

在超高频下,核心引擎将比OOP C ++或Java更多的C,汇编和自定义硬件。 在引擎的延迟要求不太严格的市场中,C ++和Low GC Java成为了选择。 随着等待时间要求变得不那么严格,Java和其他动态语言可能会变得更有效率。 在这种情况下,Java投放市场的速度更快,因此您可以利用市场/需求的变化带来的优势。

参考: C ++或Java,高频交易更快? 来自我们的JCG合作伙伴 Peter Lawrey在Vanilla Java 。

相关文章:
  • Java中的低GC:使用原语而不是包装器
  • Java Lambda语法替代
  • JVM如何处理锁
  • Erlang与Java内存架构
  • Java Fork / Join进行并行编程
  • Java最佳实践系列
  • 如何在Java中获得类似于C的性能

翻译自: https://www.javacodegeeks.com/2011/07/c-or-java-which-is-faster-for-high.html

java高频面试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql字段简索引_MySQL常用的一些语句,索引,字段等

1、库相关&#xff1a;建库&#xff1a;character set&#xff1a;指定编码COLLATE&#xff1a;排序规则 utf8mb4_general_ci 大小写不敏感CREATE DATABASE test_db default character set utf8mb4 COLLATE utf8mb4_general_ci;查看建库语句&#xff1a;SHOW CREATE DATABASE t…

计算机动画专业要学什么课程,计算机动画制作专业主要课程有哪些?

对于想要报考计算机动画制作专业的同学来说&#xff0c;现在也有很多同学对于该专业还是比较感兴趣的&#xff0c;而且计算机动画制作专业现在的发展形势也是比较好的&#xff0c;那么计算机动画制作专业主要课程有哪些?培养目标重点培养学生各类平面、三维艺术、动漫设计能力…

hadoop关联文件处理

c001.txt ------------------------------ filetype|commid|commname|addressidcomm|1|罗湖小区1|1comm|2|罗湖小区2|1comm|3|宝安小区1|4comm|4|南山小区1|3comm|5|南山小区2|3comm|6|福田小区1|2comm|7|福田小区2|2comm|8|宝安2|4comm|9|南山3|3 c002.txt ------------------…

使用Spring的缓存管理器缓存Web内容

在这篇文章中&#xff0c;我想向您展示如何使用Spring的CacheManager&#xff0c; Cacheable和JMX批注来缓存和管理Web内容的缓存的基础知识。 想象一下一个网上商店&#xff0c;它从远程WCMS&#xff08;Web内容管理系统&#xff09;获取一些内容&#xff0c;例如页眉&#xf…

nginx 正则 结尾 配置_nginx正则配置解释多用于伪静态规则

1、^&#xff1a; 匹配字符串的开始位置&#xff1b;2、 $&#xff1a;匹配字符串的结束位置&#xff1b;3、.*: .匹配任意字符&#xff0c;*匹配数量0到正无穷&#xff1b;4、\. 斜杠用来转义&#xff0c;\.匹配 . 特殊使用方法&#xff0c;记住记性了&#xff1b;5、(值…

学水利的想转行计算机,为什么说千万别学水利水电工程?附水利八大院排名2020年(最新)...

选择科目测一测我能上哪些大学选择科目领取你的专属报告>选择省份关闭请选择科目确定v>水利水电工程一直是国家建设中离不开的一个环节&#xff0c;该专业在父母眼中是也很有前途的专业&#xff0c;但近几年&#xff0c;许多人不太看好水利水电工程专业了&#xff0c;甚至…

【WP8】ResourceDictionary

WP8中引用资源字典 当我们定义的样式太多的时候&#xff0c;我们可以把样式分别定义在不同的文件中&#xff0c;然后通过 MergedDictionaries 应用到其他资源字典中&#xff0c;看下面Demo 我们可以把样式定义在多个文件中&#xff0c;然后再App.xaml中引用 我们先定义三个文件…

ejb 2.0 3.0_EJB 3.0注入和查找简介

ejb 2.0 3.0介绍 Enterprise JavaBeans Specification v。3.0引入了简化的&#xff0c;基于注释的API&#xff0c;用于EJB注入和查找。 EJB 3.0现在是POJO&#xff0c;可以使用简单的注释将其注入其他组件&#xff08;例如EJB和Servlet&#xff09;。 EJB 3.0是Java EE 6的许多…

python夹角余弦雷达图_雷达导论PART-II.1 无线电波与交变电流信号

今天开始进入第二篇-必要的准备知识&#xff0c;全部的篇章结构见我的第一篇文章“雷达导论 引言”。第二篇有3个章节&#xff0c;如下图所示&#xff0c;分别是第4章-无线电波与交变电流信号、第5章-用一种非数学的方法理解雷达、第6章-雷达的数学预备知识。今天先讲第4章&…

手机计算机数字显示在桌面上,手机计算器有哪些使用方法

智能手机中的计算器&#xff0c;平时买完菜就要仔细的看看有没有价格对错的地方&#xff0c;所以使用手机计算器十分的方便。下面学习啦小编就给大家分享手机计算器的使用方法。手机计算器的使用方法一、查找计算器在手机上&#xff0c;计算器无需另行安装&#xff0c;一般系统…

最大堆的Java实现

最大堆的解释见&#xff1a;http://www.java3z.com/cwbwebhome/article/article1/1362.html?id4745 这里是整理后的代码&#xff1a; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List;import com.dm.core.structur…

Oracle Java Mission Control:终极指南

“我们喜欢关注Mikhail Vorontsov的博客&#xff0c;并获得他对Java Performance相关问题的看法。 我们曾多次被问到Takipi的Java错误分析与Java Mission Control和Java Flight Recorder有何不同。 因此&#xff0c;尽管工具之间的差异很大&#xff08;主要是&#xff0c;JMC主…

福州大学计算机专业考研,2015年福州大学计算机考研经验贴

2015年福州大学计算机考研经验贴福州大学发布于2019年9月24日 02:18阅读数 3995一年的考研路过去了&#xff0c;从初试到复试&#xff0c;懵懵懂懂到略有所知。在此&#xff0c;不谈成绩&#xff0c;没有骄傲&#xff0c;讲点自己的经验&#xff0c;希望帮到各位。以下所有言论…

python购物车实现的功能是什么_Python3实现购物车功能

Python3实现购物车功能来源&#xff1a;中文源码网 浏览&#xff1a; 次 日期&#xff1a;2018年9月2日【下载文档: Python3实现购物车功能.txt 】(友情提示:右键点上行txt文档名->目标另存为)Python3实现购物车功能 本文实例为大家分享了Python3实现购物车功能的具体…

杭电考研计算机专业课_杭州电子科技大学计算机考研专业课平均分76.03,国家线复试是这个原因!...

杭电计算机学院是计算机类报考热门&#xff0c;2019考研英语数学开始统一采用英语一数学一&#xff0c;不分学硕专硕还是非全日制&#xff1b;今年复试线已出&#xff0c;除计算机技术专硕复试线280分&#xff0c;高于国家线&#xff0c;其余专业均是国家线270分复试&#xff1…

网络工程属于计算机哪一类,网络工程专业属于什么门类

在高考志愿填报的时很多考生和家长都不知道网络工程专业属于什么门类&#xff0c;很是影响考生的志愿填报专业选择&#xff0c;下面有途网小编根据考生的要求整理出网络工程专业属于工学类提供给大家&#xff0c;希望能够帮助考试顺利的填报好自己的专业。网络工程专业介绍专业…

[003]容器和动态数组的使用

例&#xff1a; 编写程序读入一组 string 类型的数据&#xff0c;并将它们存储在vector 中。接着&#xff0c;把该 vector 对象复制给一个字符指 针数组。为 vector 中的每个元素创建一个新的字符数 组&#xff0c;并把该 vector 元素的数据复制到相应的字符数组 中&#xff0c…

linux 查看显卡信号_Linux下如何查看NVIDIA显卡信息

匿名用户1级2015-07-28 回答lspci | grep -i vga这样就可以显示机器上的显卡信息&#xff0c;比如[rootlocalhost conf]# lspci | grep -i vga01:00.0 VGA compatible controller: nVidia Corporation Device 1081 (rev a1)02:00.0 VGA compatible controller: nVidia Corpora…

用计算机演奏打上花火,米津玄师打上花火歌词中文谐音(最好要简单全面)

满意答案.Ador2020.03.19采纳率&#xff1a;60% 等级&#xff1a;14已帮助&#xff1a;2446人打上花火 - 《升起的烟花&#xff0c;从下面看&#xff1f;还是从侧面看&#xff1f;》主题曲 词&#xff1a;米津玄师 曲&#xff1a;米津玄师xDAOKO有些地方一些音不对请见谅哈 …

Hibernate自动提交命令强制MySQL在过多的磁盘I / O中运行

亲爱的大家&#xff0c; 我敢肯定&#xff0c;你们中的许多人都在使用Hibernate和MySQL&#xff0c;我自己在这里和那里都使用它。 通常&#xff0c;编程模型是不错的&#xff0c;但是普通的JDBC可以快得多已经不是什么秘密了。 在这篇文章中&#xff0c;我想引起您的注意Hibe…