项目中有个组件是用perl语言编写,最近该组件有个新需求要开发,学习代码的过程中发现现有代码连数据库的方式是用sqlplus连接oracle,将其数据生成到文本文件,再利用读文件的方式读入到内存数据结构中. 这种方式虽然能解决问题,如果改成直连数据库,就可以不用文本文件中转了,性能是否也会提升?
让我们来对比下, 以下代码分成两块 if块里的内容是直连,else块里的内容是sqlplus方式.
数据量是60W条左右.
#!/usr/bin/perl
use DBI;
my $now1 = time;
if(0) {
$dbname="sid";
$user="user";
$passwd="password";
$dbh="";
$dbh = DBI->connect("dbi:Oracle:$dbname",$user,$passwd) or die "can't connect to
database ". DBI-errstr;
#连接数据库
$sth=$dbh->prepare("select * from dba_source");
$sth->execute;
#执行sql语句
while (@recs=$sth->fetchrow_array) {
#读取记录数据
print $recs[0].":".$recs[1].":".$recs[2]."\n";
}
#断开连接
$dbh->disconnect;
}
else {
system "sqlplus", "system/orcl\@ORCL", "\@zsql.sql";
my $dbdata = "C:/Perl/bin/test/dbout.txt";
open(IN, $dbdata);
while(<IN>) {
chomp;
my $oneLine = $_;
print "oneLine:$oneLine\n";
}
}
my $now2 = time;
my $diff = $now2 - $now1;
print "time cost:$diff s\n";
oracle直连:
第5行的条件改成1,运行3次,耗时分别为 58s, 58s, 50s.
sqlplus连接:
第5行的条件改成0,运行3次,耗时分别为 260s, 209s, 147s.
可见,虽然sqlplus连接第三次运行的耗时在不断减少,但不可否认,直连比sqlplus方式至少快1倍.
通过加上-d:NYTProf运行,并生成html后,
perl -d:NYTProf z1.pl
nytprofhtml nytprof.out
我们可以看到sqlplus语句的运行时间是27.3s,而直连时只消耗了375ms.
细心的读者可能会发现sqlplus连接时耗时从260->209->147,耗时减少明显,那到底是sql数据被缓存还是perl自身的优化呢? 通过对比两次sqlplus运行的prof信息,我们可以看到print语句运行时间从171s降低到了41s, 看来是perl内部对print做了些优化.
- 大小: 26.7 KB
- 大小: 31.8 KB
分享到:
相关推荐
Perl GUI日志分析工具是一款基于Perl编程语言开发的图形用户界面应用,专为解析和分析日志文件设计。它能够帮助用户快速理解日志数据,提取关键信息,从而进行故障排查、性能监控或数据分析。这款工具包含源码,使得...
3. **统计分析**:工具会自动统计日志中的各种信息,如错误次数、请求频率、响应时间等,并以图表形式展示,便于快速理解和识别问题。 4. **搜索与高亮**:用户可以搜索特定字符串或模式,并将匹配的行高亮显示,...
标题 "PERL编写的服务器响应时间(ping)测试" 涉及到的是使用Perl编程语言来实现一个功能,该功能可以测量服务器的响应时间,并将结果以图形化的HTML文件展示出来。Perl是一种通用的、解释型的脚本语言,特别适合...
此外,mod_perl的性能监控和调优也是重要内容,包括日志分析、性能基准测试和资源管理。 除了基本功能,mod_perl还提供了一系列高级特性,如Apache::Registry、Apache::ASP等,它们使得开发人员能够更方便地实现MVC...
这一步可能会花费较长时间,取决于系统的性能。 ```bash # 编译Perl源代码 make # 测试编译结果 make test ``` 在编译过程中,如果出现任何错误或警告,需要仔细检查并解决这些问题。`make test`命令可以帮助验证...
总结起来,高级Perl技术培训涵盖了Perl语言的多个高级方面,包括最新的Perl5.10版本特性、测试方法(包括代码覆盖分析)、数据库访问、性能分析与基准测试、面向对象编程、以及使用Moose库和Catalyst框架的现代Perl...
Perl最初由Larry Wall于1987年设计,目的是为了文本处理和系统管理,但随着时间的发展,它已广泛应用于网络编程、图形处理、数据库接口和各种自动化任务。 "Perl语言入门.pdf"可能包含Perl的基础语法,例如变量声明...
通过正则表达式,Perl可以轻松地对日志文件进行分析,查找特定模式,甚至进行数据提取和转换。例如,`grep`命令可以用来快速过滤日志信息,而`awk`的功能在Perl中可以通过更直观的方式实现,使得处理复杂逻辑变得...
- **作用域与持续时间**: 解释了Perl中作用域与持续时间的区别,这是理解变量生命周期的关键。 - **错误处理**: 提供了最佳实践,帮助程序员有效地处理程序中的错误情况。 - **代码复用**: 讨论了如何编写可重用的...
此外,`fsm_perl`还能够自动生成配套的Synopsys Design Compiler脚本,这些脚本可以用于合成、比较每个合成实现的面积和时序性能。 #### 设计流程 图1展示了基本的`fsm_perl`设计流程: 1. 使用任何文本编辑器...
- **信号处理和异步I/O**:Perl可以处理操作系统发出的信号,并支持非阻塞I/O,这对于编写高性能的网络服务器或长时间运行的守护进程非常有用。 - **多线程编程**:Perl具有内置的多线程支持,可以利用多核处理器的...
7. **优化和性能**:随着网站流量的增长,优化CGI程序以减少响应时间和提高服务器效率变得尤为重要。这包括缓存策略、减少不必要的数据库查询、使用高效的算法等。 8. **Perl模块的使用**:Perl拥有丰富的模块生态...
此外,Perl还可以用来生成测试案例来验证数据保持时间(Data Hold Time),即数据在输出后需要保持稳定的时间长度。这对于确保整个系统的稳定运行至关重要。 #### 四、实例分析 假设我们需要为一款SRAM芯片编写...
5. **性能分析**:通过集成的性能分析工具,开发者可以分析代码的运行时间和内存使用情况,优化代码性能。 6. **源码分析**:PDK提供了源码分析工具,可以帮助开发者理解代码结构,查找潜在的代码异味或不良编程...
- `Gettext`库的使用,实现程序的本地化,包括消息翻译和日期/时间格式化。 9. **性能优化** - 代码审查技巧,找出性能瓶颈并进行优化。 - 使用` Benchmark`模块进行性能测试,以及如何避免不必要的计算和数据...
- **7.5 分析DNA序列**:讲解如何使用Perl进行DNA序列的统计分析。 - **7.6 练习题**:提供练习题加深理解。 - **第8章:遗传密码** - **8.1 哈希表**:介绍Perl中的哈希数据结构及其应用。 - **8.2 数据结构与...
这个工具由Perl语言编写,其主要目的是通过分析MySQL服务器的当前配置和运行状态,帮助管理员识别潜在的性能瓶颈,并提供针对性的调整建议,以提升数据库的性能和稳定性。 MySQLTuner的工作原理是通过检查一系列...
4. **性能优化**:分析和识别性能瓶颈,学习如何利用Perl的性能分析工具进行优化。 5. **编程范式**:提倡防御性编程,预防错误的发生,以及编写可读性、可维护性更强的代码。 6. **错误处理和异常处理**:理解...