julia的优化?
julia> function fib1(n)
if n==1
return n
else
return n+fib1(n-1)
end
end
fib1 (generic function with 1 method) julia> function fib2(n,s)
if n == 1
return s+1
else
return fib2(n-1,s+n)
end
end
fib2 (generic function with 1 method) julia> fib1(10)
55 julia> fib2(10)
ERROR: MethodError: no method matching fib2(::Int64)
Closest candidates are:
fib2(::Any, ::Any) at REPL[18]:2 julia> fib2(10,0)
55 julia> fib2(20)
ERROR: MethodError: no method matching fib2(::Int64)
Closest candidates are:
fib2(::Any, ::Any) at REPL[18]:2 julia> fib2(20,0)
210 julia> fib1(20)
210 julia> time(fib1(100))
ERROR: MethodError: no method matching time(::Int64)
Closest candidates are:
time() at libc.jl:206
time(::Base.Libc.TmStruct) at libc.jl:205 julia> @time(fib1(100))
0.000005 seconds (131 allocations: 7.734 KB)
5050 julia> @time(fib2(100,0))
0.000007 seconds (5 allocations: 176 bytes)
5050 julia> @time(fib1(500))
0.000005 seconds (5 allocations: 176 bytes)
125250 julia> @time(fib2(500,0))
0.000010 seconds (5 allocations: 176 bytes)
125250 julia> @time(fib1(1000))
0.000022 seconds (5 allocations: 176 bytes)
500500 julia> @time(fib2(1000,0))
0.000009 seconds (5 allocations: 176 bytes)
500500 julia> @time(fib1(10000))
0.000325 seconds (5 allocations: 176 bytes)
50005000 julia> @time(fib2(10000,0))
0.000095 seconds (5 allocations: 176 bytes)
50005000
julia> code_native(fib1,(Int64,))
.text
Filename: REPL[17]
pushq %rbp
movq %rsp, %rbp
pushq %rsi
subq $40, %rsp
movq %rcx, %rsi
Source line: 2
cmpq $1, %rsi
jne L30
Source line: 3
movl $1, %eax
addq $40, %rsp
popq %rsi
popq %rbp
retq
Source line: 5
L30:
leaq -1(%rsi), %rcx
movabsq $fib1, %rax
callq *%rax
addq %rsi, %rax
addq $40, %rsp
popq %rsi
popq %rbp
retq
nopl (%rax,%rax)
julia> code_native(fib2,(Int64,Int64))
.text
Filename: REPL[18]
pushq %rbp
movq %rsp, %rbp
Source line: 2
subq $32, %rsp
cmpq $1, %rcx
jne L26
Source line: 3
incq %rdx
movq %rdx, %rax
addq $32, %rsp
popq %rbp
retq
Source line: 5
L26:
addq %rcx, %rdx
decq %rcx
movabsq $fib2, %rax
callq *%rax
addq $32, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
尾递归版应该是有优化的啊,为什么内存和执行时间都没明显差别?
julia的优化?的更多相关文章
- Julia 语言的一些尝试
前些天发现了Julia 这门编程语言后便决定对其进行一些尝试,便写了下面的小程序,也算是看看这门语言所谓的速度快到底是怎么快法. 整数累加: x= function fff() : global x ...
- julia,集Python、C++、R为一体!Julia 1.0重磅发布, MIT发布史上最强科学计算编程语言?创始人独家解答11个问题
这个编程语言的新版本之所以受到整个人工智能界的关注,最主要的原因正是其将 C 语言的速度.Ruby 的灵活.Python 的通用性前所未有地结合在一起,支持并行处理,易于学习和使用,尤其适合科学和工程 ...
- windows 版的julia repl 启动时间已经大大优化!
julia 是一门语法类似python 偏向主要用于科学计算的语言,julia吸收了很多其它语言的优点,内置了大量函数,使用起来很方便. 之前windows下的 julia repl(交互解释器)启动 ...
- 详解 CUDA By Example 中的 Julia Set 绘制GPU优化
笔者测试环境VS2019. 基本介绍 原书作者引入Julia Sets意在使用GPU加速图形的绘制.Julia Set 是指满足下式迭代收敛的复数集合 \[ Z_{n+1}=Z_{n}^2+C \] ...
- [转]OpenBLAS项目与矩阵乘法优化
课程内容 OpenBLAS项目介绍 矩阵乘法优化算法 一步步调优实现 以下为公开课完整视频,共64分钟: 以下为公开课内容的文字及 PPT 整理. 雷锋网的朋友们大家好,我是张先轶,今天主要介绍一下我 ...
- OpenACC Julia 图形
▶ 书上的代码,逐步优化绘制 Julia 图形的代码 ● 无并行优化(手动优化了变量等) #include <stdio.h> #include <stdlib.h> #inc ...
- 初试 Julia 语言 (转)
原文地址: https://blog.csdn.net/seekiu/article/details/47397067 随着 Julia 1.0版本的推出,人工智能圈子比较炸锅, 好像这门小众语言要 ...
- julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域
编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身2018-08-14 14:14 公司Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车.机器人.3D 打印.精准医疗 ...
- Julia:高性能 GPU 计算的编程语言
Julia:高性能 GPU 计算的编程语言 0条评论 2017-10-31 18:02 it168网站 原创 作者: 编译|田晓旭 编辑: 田晓旭 [IT168 评论]Julia是一种用于数学计 ...
随机推荐
- Spring注解学习
参考链接 http://blog.csdn.net/xyh820/article/details/7303330/
- robocopy 命令小结
robocopy "C:\dira" "J:\dira" /E /COPYALL /XJ /XD "C:\dira\dir1" " ...
- php utf-8字符转ascii字符
function utf8_urldecode($str) { $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\ ...
- python download
今天下载 python3 , 从官网下 速度 平均 十几K,网上 搜了下.提供的下载地址 几乎都是 官网的. 于是 下了个 百度同步盘,做 公开分享. 提供给 大家下载,速度 有 300 多K,提高了 ...
- C#实用技能篇
Redis配置文件详解 如果不指定配置文件,redis也可以启动,此时,redis使用默认的内置配置.不过在正式环境,常常通过配置文件[通常叫redis.conf]来配置redis. redis.co ...
- PHP左、右、内连接
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又 ...
- AngularJS-Uncaught Error: [$injector:modulerr]
我在实验AngularJS-系统代码的配置和翻译的时候遇到了如下图所示的错误: 在JS编程的时候会经常遇到,XXX不是一个函数,XXX未定义等等错误,只要看到和自己编写的代码语句相关的东西直接找到就能 ...
- PHP数据类型
在PHP中,一共支持8种数据类型:整型,浮点型,布尔型,字符串型,数组,对象,空类型(NULL),资源型 标量类型 int(integet)整数类型 整型数据:在内存中占4个字节,也就是32个bit位 ...
- SVN服务器的搭建和使用
VisualSVN Server和TortoiseSVN的下载,安装,汉化:SVN服务器搭建和使用(一) 如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使用:SVN服 ...
- java 平台 权限管理
最近在做公司内部的物流业务平台的权限管理,感触颇多.记录一下 权限管理分两部分:数据权限和操作权限. 数据权限: 这个是和用户相关的. 因为平台是多机构的,所以再考虑数据权限的时候,是按照机构来管理的 ...