楼主: nyfor

[精华] 最小源代码擂台

[复制链接]
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
361#
发表于 2008-5-26 10:33 | 只看该作者
原帖由 DragonBill 于 2008-5-26 10:25 发表



要把Service停掉, 再打Patch, 我上次给9i打Patch, 忘了停掉Service, 直接setup patch, 结果....



10.1到10.2,算是upgrade?

使用道具 举报

回复
论坛徽章:
69
生肖徽章2007版:羊
日期:2008-11-14 14:42:19复活蛋
日期:2011-08-06 08:59:05ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主4段
日期:2012-05-15 15:24:11
362#
 楼主| 发表于 2008-5-26 10:38 | 只看该作者
原帖由 于 2008-5-26 10:24 发表



哎,我不是说要同时兼顾代码长度和效率了
我意思是,将你们现有的代码,去除隐式转换
我运行一下看看能不能提高效率
由于代码已经很精悍了,去除隐式转换应该也不会增加太多字节

如果要确保取出每一个隐式转换,包含精度的转换, 也会增加很多字节的. 我的转换后如下:
create or replace function my_add_months
(
   p_date_string varchar2,
   p_months      number
) return varchar2 is
   c int := 100;
   a int := to_number(p_date_string);
   y int := round(to_number(a) / c / c);
   m int := round(to_number(a) / c - y * c);
   t int;
   procedure p is
   begin
      t := to_number(substr('525454554545', m, 1));
      t := round(t + 26 + 1 / (t + mod(y, 4) + instr(0, mod(y, c)) * mod(y, 400)));
   end;
begin
   p;
   a := mod(to_number(a), c);
   a := trunc(to_number(a) / t) * c + to_number(a);
   m := m + p_months + y * 12 - 7;
   y := round(m / 12);
   m := m - y * 12 + 7;
   p;
   return to_char(y * c * c + m * c + least(to_number(a), t));
end;

加入所有的显示转换及精度转换后 475 Bytes.

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
363#
发表于 2008-5-26 10:41 | 只看该作者
是啊, TO_NUMBER, ROUND, TO_CHAR...个个都so长so长

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
364#
发表于 2008-5-26 10:43 | 只看该作者
那个 +/- 7, 我也是无论如何想不到那一方面去的

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
365#
发表于 2008-5-26 10:46 | 只看该作者

回复 #364 nyfor 的帖子

转换前
SQL> /
Congratulation ... Code Length: 348 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 04.26
SQL> /
Congratulation ... Code Length: 348 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 04.25
SQL> /
Congratulation ... Code Length: 348 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 04.25
SQL> /
Congratulation ... Code Length: 348 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 04.25



转换后
SQL> call t();
Congratulation ... Code Length: 475 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 04.06
SQL> /
Congratulation ... Code Length: 475 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 03.96
SQL> /
Congratulation ... Code Length: 475 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 03.96
SQL> /
Congratulation ... Code Length: 475 Bytes. Times: 00:00:04

调用完成。

已用时间:  00: 00: 03.96

提高了6.8%  
效率提升不是很明显

[ 本帖最后由 谁 于 2008-5-26 10:47 编辑 ]

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
366#
发表于 2008-5-26 10:47 | 只看该作者
原帖由 于 2008-5-26 10:33 发表



10.1到10.2,算是upgrade?



不知道, 我没试过10g, 一直用9i

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
367#
发表于 2008-5-26 10:47 | 只看该作者
恭喜!您刚拣到ITPUB送出的奥运纪念徽章。2008北京奥运纪念徽章:棒球

这是啥?

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
368#
发表于 2008-5-26 10:48 | 只看该作者
原帖由 DragonBill 于 2008-5-26 10:47 发表



不知道, 我没试过10g, 一直用9i


找到一个帖子 http://www.itpub.net/viewthread.php?tid=975703
正在看Oracle安装文档

使用道具 举报

回复
论坛徽章:
18
生肖徽章2007版:虎
日期:2008-04-11 18:37:24奥运会纪念徽章:击剑
日期:2008-07-03 11:38:17迷宫蛋
日期:2011-05-10 13:03:40茶鸡蛋
日期:2011-05-10 13:05:16蜘蛛蛋
日期:2011-05-10 13:07:01灰彻蛋
日期:2012-12-10 11:47:16鲜花蛋
日期:2013-07-07 10:07:20
369#
发表于 2008-5-26 10:50 | 只看该作者
原帖由 于 2008-5-26 10:47 发表
恭喜!您刚拣到ITPUB送出的奥运纪念徽章。2008北京奥运纪念徽章:棒球

这是啥?


Ft, 我咋就没捡的??
你不知道那是啥?  打劫

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:摔跤
日期:2008-07-02 08:48:392009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2013-12-18 09:29:11SQL数据库编程大师
日期:2016-01-13 10:30:43SQL大赛参与纪念
日期:2016-01-13 10:32:19
370#
发表于 2008-5-26 10:50 | 只看该作者
yangtingkun的

SQL> call t();
Congratulation ... Code Length: 412 Bytes. Times: 00:00:03

调用完成。

已用时间:  00: 00: 03.01
SQL> /
Congratulation ... Code Length: 412 Bytes. Times: 00:00:03

调用完成。

已用时间:  00: 00: 02.98
SQL> /
Congratulation ... Code Length: 412 Bytes. Times: 00:00:03

调用完成。

已用时间:  00: 00: 02.98
SQL> /
Congratulation ... Code Length: 412 Bytes. Times: 00:00:03

调用完成。

已用时间:  00: 00: 03.01

太强了

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表