设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4013|回复: 15
打印 上一主题 下一主题

[胡扯] 谁说Ruby效率低[防误解:Ruby被运行效率低,但运行效率高]

[复制链接]
头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

跳转到指定楼层
1
发表于 2015-2-20 13:26:52 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

梦石
0
星屑
105
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

16
发表于 2015-2-21 12:53:07 | 只看该作者
已被触瞎(;´Д`)
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
799
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
15
发表于 2015-2-21 11:36:24 | 只看该作者
好慢啊。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
705 小时
注册时间
2007-12-23
帖子
874
14
发表于 2015-2-21 10:44:54 | 只看该作者
语言的速度还是靠实现来决定的

LZ既然搞过OI,那我就介绍一道最近冬令营的一道题目(那个测试点我当时一分都没拿到)

题面的意思是给你一个C++程序和输入,但这个程序在比赛时间5小时以内跑不出解,必须借助人为的优化。要求给出输出。

最后一个任务是一个很长很长的C++程序,内容大概是这样的:
  1. void A() {++ans;}
  2. void B() {A();A();A();A();A();A();A();A();A();}
  3. void C() {B();B();B();B();B();B();B();B();B();}
  4. ..........
  5. void AB() {A(); A(); B(); B();}
  6. void AC() {A(); A(); C(); C();}
  7. .........
复制代码
主程序里就是一堆函数调用,要求输出最后的ans

这样的程序按照正常的情况跑得出来才有鬼呢。但办法也是有的。有牛人编了个程序分析语义的;大多数人开了个map(或者是hash)记忆化;最强的是我的一个同学:他用clang开优化开关直接编译,结果把这个神奇的程序直接优化掉了,一秒出解!

所以即使是同一种语言,不同的实现对效率的影响也是很重要的。比如RGSS对安全性的要求很高、对效率要求不高,因此不仅效率低,还有调用栈的层数限制等等蛋疼的设定。

光看语言的话,理论上静态的的确会快,但是也不绝对。比如scanf和printf是运行时决定I/O的数据类型,而cin/cout是编译时就已经决定了数据类型,但前两者的运行速度却要快得多。因此主要还是具体实现的问题吧。
买了正版RMMV的同学进来看一下,谢谢~
https://rpg.blue/thread-393237-1-1.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
13
发表于 2015-2-21 10:44:47 | 只看该作者
本帖最后由 寒冷魔王 于 2015-2-21 10:50 编辑

CRuby用C实现的,相比JRuby运行效率要高许多。

Ruby解释器运行效率确实很高,嘛,毕竟是用C写的嘛
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3582
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
12
发表于 2015-2-20 23:39:07 | 只看该作者
yagami 发表于 2015-2-20 23:28
确切的说 静态语言高效  动态语言灵活 编译那等待的时间不是白等的

编译期做掉了很多事情 网上随便找个极端点的 一般C不太用的元编程
  1. template <int N>
  2. struct Factorial
  3. {
  4.     enum
  5.     {
  6.         value = N * Factorial<N - 1>::value
  7.     };
  8. };

  9. // 特化版本
  10. template <>
  11. struct Factorial<0>
  12. {
  13.     enum
  14.     {
  15.         value = 1
  16.     };
  17. };

  18. int main()
  19. {
  20.     cout << Factorial<5>::value << endl; // 输出120
  21. }
复制代码
在编译期,Factorial<5>::value就被翻译成了5 * 4 * 3 * 2 * 1,在运行期直接执行乘法即可。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3582
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
11
发表于 2015-2-20 23:28:23 | 只看该作者
确切的说 静态语言高效  动态语言灵活 编译那等待的时间不是白等的
回复 支持 反对

使用道具 举报

Lv4.逐梦者

缘梦

梦石
0
星屑
6201
在线时间
5594 小时
注册时间
2014-2-1
帖子
1984

开拓者剧作品鉴家

10
发表于 2015-2-20 22:43:57 | 只看该作者
不行了,刚开始学C语言的渣渣基本看不懂

评分

参与人数 1星屑 +25 收起 理由
晴兰 + 25 塞糖

查看全部评分


RPGmaker MV交流群: 377293241 提供RPGmakerMV资源共享下载和狂三本子亚丝娜本子千斗五十铃等
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

9
发表于 2015-2-20 21:44:29 | 只看该作者
说人话大快人心

评分

参与人数 1星屑 +25 收起 理由
晴兰 + 25 塞糖

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

8
 楼主| 发表于 2015-2-20 21:39:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-20 14:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表