- 注册时间
- 2018-12-8
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 3549
- 在线时间
- 小时
|
发表于 2020-5-8 08:59:08
|
显示全部楼层
本帖最后由 dlpg070 于 2020-5-8 10:29 编辑
一段速度快的代码 致敬chyanog ,hujunhua
- (* 一段速度快的代码 致敬chyanog ,hujunhua *)
- Clear["Global`*"];(* 1. 计算前清存储空间,不是初始化到 zero *)
- fch[a_,b_,n_]:=fch[a,b,n]= AbsoluteTiming[(*{a,b}={3,2};*)
- (*n=10^8;*)
- xx=RandomReal[{-a,a},n]^2;
- yy=RandomReal[{-b,b},n]^2;
- B=Unitize[1,xx/a^2+yy/b^2];
- Total[B Sqrt[xx+yy]]/Total[B]]
- fhu1p[a_,b_,n_]:=fhu1p[a,b,n]=Module[{xx,yy,B,out1p},
- AbsoluteTiming[(*n=10^7;随机数个数*)
- xx=RandomReal[{-1,1},n]^2;
- yy=RandomReal[{-1,1},n]^2;
- B=Unitize[1,xx+yy];
- out1p=Total[B Sqrt[xx*a^2+yy*b^2]]/Total[B]]
- ](* 2. Module 使用局部变量,及时释放,无大内存驻留*)
- Print["计算时间:",DateString["ISODateTime"]]
- tab=Table[{k,"hu1p:",
- out1p=fhu1p[3,2,10^7],
- "ch :",
- outch=fch[3,2,10^7]
- },{k,1,4}];(* 3. 多次重复运算 ,结果稳定 *)
- Grid[tab]
- Print["---end---"]
- (*Quit[] 4. 任务已经结束,于我何用,保护现场,备后续单元使用 *)
- 计算时间:2020-05-08T08:46:57
- 1 hu1p: {0.584809,1.68326} ch : {0.616615,1.68321}
- 2 hu1p: {0.584809,1.68326} ch : {0.616615,1.68321}
- 3 hu1p: {0.584809,1.68326} ch : {0.616615,1.68321}
- 4 hu1p: {0.584809,1.68326} ch : {0.616615,1.68321}
- ---end---
复制代码
|
|