我在Perl中的import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import org.junit.Test;
public class MapsPerfTest {
@Test
public void testMaps() {
testMap("HashMap", new HashMap<>());
testMap("Hashtable", new Hashtable<>());
testMap("Synced-HashMap", Collections.synchronizedMap(new HashMap<>()));
}
void testMap(String name, Map<Integer, String> h) {
for(int i=1; i<=tries; ++i) {
long t1 = timeit(() -> testMapPut(h));
long t2 = timeit(() -> testMapGet(h));
System.out.println(String.format("%d %s put/get --> %7.2f / %7.2f ms",
i, name, t1/1000/1000.0, t2/1000/1000.0));
}
}
long timeit(Runnable r) {
System.gc();
long t = System.nanoTime();
r.run();
return System.nanoTime() - t;
}
static final int tries = 5;
static final int count = 100000000;
static final String VALUE = "-";
static final int putSpace = 100;
static final int getSpace = putSpace*2;
static final Integer[] numbers = new Integer[getSpace+1];
static {
for(int i=getSpace; i>=0; --i)
numbers[i] = i;
}
void testMapPut(Map<Integer, String> m) {
for(int i=count; i>0; --i)
m.put(numbers[i%putSpace], VALUE);
}
void testMapGet(Map<Integer, String> m) {
for(int i=count; i>0; --i)
m.get(numbers[i%getSpace]);
}
}
语句上遇到问题。
我无法使用if
来获取if
语句来查看文件。我基本上拥有扩展名为-e
和.new
的文件。
.old
这是我的输出:
my $dir = "/Users/henry/Desktop/perltest/templates";
my @oldfiles = glob "$dir/*.new";
my $oldfile;
print "checking for new templates\n";
foreach $oldfile ( @oldfiles ) {
print "$oldfile\n";
if ( $oldfile =~ /(\S+)\.new/ ) {
my $newfile = $1;
print "$newfile\n";
if ( -e $newfile ) {
print "file exist\n";
}
else {
print "file does not exist\n";
}
}
};
答案 0 :(得分:1)
我基本上有扩展名为
.new
和.old
的文件
因此,您有a.txt.new
和a.txt.old
,但没有a.txt
,并且消息file does not exist
似乎是正确的
您似乎对变量感到困惑:您在名为*.txt.new
的数组中拥有所有@oldfiles
文件名,而$newfile
没有.new
或{{1} }后缀。您可能还想说类似的话吗?
.old