我试图在这里优化一些代码,并编写了两个不同的简单子程序,它们将从另一个向量中减去一个向量.我将一对向量传递给这些子程序,然后执行减法.第一个子例程使用中间变量来存储结果,而第二个子例程使用' - ='运算符进行内联操作.完整代码位于此问题的底部.
当我使用纯粹的实数时,程序运行正常,没有问题.但是,如果我使用复杂的操作数,那么原始向量(最初传递给子例程的向量)将被修改!为什么这个程序适用于纯实数,但在使用复数时会进行这种数据修改?
注意我的过程:
出现这个问题是因为在第二个子程序(速度快得多)的情况下,我不希望@ main_v1向量发生变化.我需要那个矢量来进行进一步的计算,所以我需要它保持不变.
关于如何解决这个问题,或者我做错了什么?我的整个代码都在下面,应该是有用的.我一直在使用下面显示的CLI语法来运行程序.我选择5只是为了让我能够轻松阅读.
c:\> bench.pl 5 REAL
要么
c:\> bench.pl 5 IMAG
#!/usr/local/bin/perl
# when debugging: add -w option above
#
use strict;
use warnings;
use Benchmark qw (:all);
use Math::Complex;
use Math::Trig;
use Time::HiRes qw (gettimeofday);
system('cls');
my $dimension = $ARGV[0];
my $type = $ARGV[1];
if(!$dimension || !$type){
print "bench.pl <n> <REAL | IMAG>\n";
print " <n> indicates the dimension of the vector to generate\n"; …Run Code Online (Sandbox Code Playgroud)