当前位置:首页 > 技术分析 > 正文内容

对比 java,go,c# 生成的本地可执行程序

ruisui884个月前 (02-11)技术分析23

现在java,go和csharp都可以编译成多个平台的本地可执行程序了,我们今天就来对比测试下他们生成本地程序后对系统资源的占用差别。



java的我用quarkus框架来做个测试,虽然springboot也有,但还处于实验中还不能处于实际运用中。

我使用官方最简单的样例:





可以看到生成的程序大小约为40m,内存占用约为21m,和在内存方面和通常使用的jvm运行比来是要小了很多很多。



csharp我用net6的asp.net core来做测试。




内存占用和java的差不多,由于java的静态资源是打在包中的,而csharp是裸露在外的,这个wwwroot约7mb,加上主程序也就和java的差不多了。



go的测试我用的是iris框架,gin也很不错,只是没法把静态目录映射到根地址这让我很纠结,只好选择了iris。




go生成的包就特别的小,只有16m,内存占用也只有18.9m。


从本次测试结果看,go的优势还是最大的。net虽然也很接近,但是生成linux的可执行程序放到docker中用乌班图或者centos去跑的话会报错误,缺少某个依赖,但是放到宿主机的linux中跑就没有问题,似乎精简后的镜像把net需要的东西也给精简掉了,所以还是有兼容性问题。java虽然也达到了效果了,但是由于java不支持交叉编译并且不是所有的api都支持本地化编译,所以目前只能极小项目上使用。


欢迎三连哦!


#java#

#csharp#

#golang#

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1877.html

标签: centos java
分享给朋友:

“对比 java,go,c# 生成的本地可执行程序” 的相关文章

继Yuzu后,任天堂要求移除多个Switch模拟器项目

IT之家 7 月 11 日消息,任天堂美国分公司 (Nintendo of America) 已要求移除多个用于模拟 Nintendo Switch 游戏的开源模拟器项目,其中包括 Suyu、Nzu、Uzuy、Torzu、Sudachi 和 Yuzu-vanced 等。这些模拟器均被指控包含绕过任天...

HTML5最新版本介绍

HTML5是HTML4.01和XHTML1.0之后超文本标记语言的最新版本,由一群自由思想者设计,最终实现了多媒体支持、交互性、更智能的表单和更好的语义标注。 HTML 5不只是 HTML规范的最新版本,它是用于生成现代 Web内容的一系列相关技术的总称,其中最重要的三个技术是:HTML5核心规范...

数组、去重、排序、合并、过滤、删除

ES6数字去重 Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4])] //[1,2,3,4]2、ES6数字排序 [1,2,3,4].sort(); // [1, 2,3,4],默认是升序...

三、Uni-app + vue3 页面如何跳转及传参?

Vue 项目往往需要使用 vue-router 插件,刚开始入门 Uni-app + Vue3 项目的同学,会不会想着路由使用 vue-router V4 版本不就可以了吗?不怕大家笑话,我就是这样想的,毕竟我是第一次使用 Uni-app ,由于孕期记性贼差,所以我决定写成笔记,加深记忆。uni-a...

从 Vue2.0 到 React17——React 开发入门

作者:佚名来源:前端大全前言找工作时发现有一些公司是以React作为技术栈的,而且薪资待遇都不错,为了增加生存的筹码,所以还是得去学一下React,增加一项求生技能。因为我用Vue2.0开发项目已经四年了,故用Vue2.0开发项目的思路来学习React。前端项目是由一个个页面组成的,对于Vue来说,...

vue.js 双向绑定如何理解,有什么好处!#云南小程序开发

Vue.js 的双向数据绑定是借助于 JavaScript 的一些特性,如对象的属性 getter 和 setter 以及 Vue 的依赖追踪系统实现的。简单来说,双向数据绑定就是数据与视图间的双向通信,也就是说数据的改变会马上反映到视图中,视图的改变也会立刻改变数据。具体来说,当你改变了数据时,视...