免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6293 | 回复: 8
打印 上一主题 下一主题

[求助]关于print函数的一些细节问题探讨 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-09 17:34 |只看该作者 |倒序浏览
在论坛看了一些别人的代码,经常会用到print函数来打印指定的字符串,有一些需要在末尾打印换行符,但是我看到了三个不同的版本:
一、
  1. my $var='hello,world';
  2. print "$var\n";
复制代码

二、
  1. my $var='hello,world';
  2. print $var , "\n";
复制代码


三、
  1. my $var='hello,world';
  2. print $var . "\n";
复制代码


想问一下这三种方式有什么区别吗?比如在效率和内部处理方面?

论坛徽章:
0
2 [报告]
发表于 2007-12-09 18:12 |只看该作者
个人感觉"$var\n"和$var . "\n"是一样的, 不知道$var特别大的时候会不会降低效率.

我测试下, 占个蹲位先.



To Be Continued...

论坛徽章:
0
3 [报告]
发表于 2007-12-09 18:43 |只看该作者
第二种效率最快

第一种最慢

论坛徽章:
0
4 [报告]
发表于 2007-12-09 19:20 |只看该作者
use strict;
use warnings;
use File::Spec;
use Benchmark;

my $str = 'Hello, World' x 1000000;
open(NULL, ">", File::Spec->devnull);
timethese(100, {
    'print $str, "\n"'  => sub { print NULL $str, "\n"},
    'print "$str\n"'    => sub { print NULL "$str\n"},
    'print $str . "\n"' => sub { print NULL $str . "\n"},
});

# Windows上跑的, 结果如下:
# Benchmark: timing 100 iterations of print "$str\n", print $str . "\n", print $str, "\n"...
# print "$str\n": 14 wallclock secs (12.46 usr +  0.18 sys = 12.64 CPU) @  7.91/s (n=100)
# print $str . "\n": 15 wallclock secs (12.60 usr +  0.18 sys = 12.78 CPU) @  7.83/s (n=100)
# print $str, "\n": 11 wallclock secs (10.45 usr +  0.12 sys = 10.57 CPU) @  9.47/s (n=100)
# 比较明显的是print $str, "\n"最快, 而其余2种方法不相上下(多次测试中这2种各有快慢, 可忽略差异).

论坛徽章:
0
5 [报告]
发表于 2007-12-09 19:24 |只看该作者
简单分析下:
print $var, "\n" 直接输出
print "$var\n" 内部生成新变量, 再输出
print $var . "\n" 同上

论坛徽章:
0
6 [报告]
发表于 2007-12-09 20:23 |只看该作者
嗯,多谢Lonki的测试~~明白了,以后直接用print $var,"\n"这样的形式了,呵呵~

论坛徽章:
0
7 [报告]
发表于 2007-12-10 11:18 |只看该作者
厉害。能不能说下Benchmark的用法。
CPAN没有找到。郁闷

论坛徽章:
0
8 [报告]
发表于 2007-12-10 11:24 |只看该作者
这句话表示什么意思的?谢谢
open(NULL, ">", File::Spec->devnull);

论坛徽章:
0
9 [报告]
发表于 2007-12-10 12:13 |只看该作者
To liang573728 :

Benchmark: 在CPAN搜索时下拉选modules.

open(NULL, ">", File::Spec->devnull); # 相当于Linux下的/dev/null
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP