История изменений
Исправление beck, (текущая версия) :
Все просто - вы просто не умеете им пользоваться.
Не поленился и напейсал простейший тест. Итак, имеется два текстовых файла, каждый примерно по 90 МВ, с длиной строки под 900 байт и количеством строк порядка 100 тысяч.
В каждой строке с 3 по 14 позицию есть некий код (AAAABBCCXXX), который нужно достать и сравнить различия между файлами (впрочем до этого на питоне дело не дошло – стало лень), на perl я это сравнение когда-то давно делал, поэтому в коде собирается массив, не стал переделывать.
Остановился я на достать из двух файлов этот код и построчно выгрузить в третий файл, тривиальнейшая задача, да и данных, прямо скажем, не гигабайты.
file_in_1 = open(sys.argv[1], 'rt')
file_in_2 = open(sys.argv[2], 'rt')
file_out = open(sys.argv[3], 'wt')
text_1 = file_in_1.read().split('\n')
text_2 = file_in_2.read().split('\n')
for temp in text_1:
file_out.write(temp[3:14] + '\n')
for temp in text_2:
file_out.write(temp[3:14] + '\n')
вывод:
2020-03-12 19:18:03.775619
2020-03-12 19:18:05.362468
время работы 1,59 секунд
open(FP_01, "<$ARGV[0]") || die "Can not open $ARGV[0] file";
open(FP_02, "<$ARGV[1]") || die "Can not open $ARGV[1] file";
open(FP_RES, ">$ARGV[2]") || die "Can not open $ARGV[2] file";
my @input1 = <FP_01>;
my @input2 = <FP_02>;
my @bic1;
my @bic2;
my $i1;
my $i2;
$i1 = 0;
my $time1 = gettimeofday;
print $time1, "\n";
foreach (@input1)
{
$bic1[$i1] = substr($_, 3, 11);
print FP_RES $bic1[$i1] . "\n";
$i1++;
}
$i2 = 0;
foreach (@input2)
{
$bic2[$i2] = substr($_, 3, 11);
print FP_RES $bic2[$i2] . "\n";
$i2++;
}
my $time2 = gettimeofday;
print $time2, "\n";
вывод:
1584030638.01605
1584030638.11776
время работы 0,1 секунды
Разница – в почти 16 раз. При масштабировании будет ещё хуже. Наверное у питона есть достоинства, но для моих элементарных задач питон - тормозное убожество.
PS Только обратил внимание: perl пишет в файл «как есть», а питон добавляет к концу CRLF, ну да, он же текстовый. А если открыть файл на запись как ‘wb’, то питон немедля начинает ругаться на то, что строку так в файл писать нельзя, надо byte-object. В perl всей этой головной боли нет, он просто пишет ровно те данные, что я ему указал.
Исправление beck, :
Все просто - вы просто не умеете им пользоваться.
Не поленился и напейсал простейший тест. Итак, имеется два текстовых файла, каждый примерно по 90 МВ, с длиной строки под 900 байт и количеством строк порядка 100 тысяч.
В каждой строке с 3 по 14 позицию есть некий код (AAAABBCCXXX), который нужно достать и сравнить различия между файлами (впрочем до этого на питоне дело не дошло – стало лень), на perl я это сравнение когда-то давно делал, поэтому в коде собирается массив, не стал переделывать.
Остановился я на достать из двух файлов этот код и построчно выгрузить в третий файл, тривиальнейшая задача, да и данных, прямо скажем, не гигабайты.
file_in_1 = open(sys.argv[1], 'rt')
file_in_2 = open(sys.argv[2], 'rt')
file_out = open(sys.argv[3], 'wt')
text_1 = file_in_1.read().split('\n')
text_2 = file_in_2.read().split('\n')
for temp in text_1:
file_out.write(temp[3:14] + '\n')
for temp in text_2:
file_out.write(temp[3:14] + '\n')
вывод:
2020-03-12 19:18:03.775619
2020-03-12 19:18:05.362468
время работы 1,59 секунд
open(FP_01, "<$ARGV[0]") || die "Can not open $ARGV[0] file";
open(FP_02, "<$ARGV[1]") || die "Can not open $ARGV[1] file";
open(FP_RES, ">$ARGV[2]") || die "Can not open $ARGV[2] file";
my @input1 = <FP_01>;
my @input2 = <FP_02>;
my @bic1;
my @bic2;
my $i1;
my $i2;
$i1 = 0;
my $time1 = gettimeofday;
print $time1, "\n";
foreach (@input1)
{
$bic1[$i1] = substr($_, 3, 11);
print FP_RES $bic1[$i1] . "\n";
$i1++;
}
$i2 = 0;
foreach (@input2)
{
$bic2[$i2] = substr($_, 3, 11);
print FP_RES $bic2[$i2] . "\n";
$i2++;
}
my $time2 = gettimeofday;
print $time2, "\n";
вывод:
1584030638.01605
1584030638.11776
время работы 0,1 секунды
Разница – в почти 16 раз. При масштабировании будет ещё хуже. Наверное у питона есть достоинства, но для моих элементарных задач питон - тормозное убожество.
Исправление beck, :
Все просто - вы просто не умеете им пользоваться.
Не поленился и напейсал простейший тест. Итак, имеется два текстовых файла, каждый примерно по 90 МВ, с длиной строки под 900 байт и количеством строк порядка 100 тысяч.
В каждой строке с 3 по 14 позицию есть некий код (AAAABBCCXXX), который нужно достать и сравнить различия между файлами (впрочем до этого на питоне дело не дошло – стало лень), на perl я это сравнение когда-то давно делал, поэтому в коде собирается массив, не стал переделывать.
Остановился я на достать из двух файлов этот код и построчно выгрузить в третий файл, тривиальнейшая задача, да и данных, прямо скажем, не гигабайты.
file_in_1 = open(sys.argv[1], 'rt')
file_in_2 = open(sys.argv[2], 'rt')
file_out = open(sys.argv[3], 'wt')
text_1 = file_in_1.read().split('\n')
text_2 = file_in_2.read().split('\n')
for temp in text_1:
file_out.write(temp[3:14] + '\n')
for temp in text_2:
file_out.write(temp[3:14] + '\n')
вывод: 2020-03-12 19:18:03.775619 2020-03-12 19:18:05.362468
время работы 1,59 секунд
open(FP_01, "<$ARGV[0]") || die "Can not open $ARGV[0] file";
open(FP_02, "<$ARGV[1]") || die "Can not open $ARGV[1] file";
open(FP_RES, ">$ARGV[2]") || die "Can not open $ARGV[2] file";
my @input1 = <FP_01>;
my @input2 = <FP_02>;
my @bic1;
my @bic2;
my $i1;
my $i2;
$i1 = 0;
my $time1 = gettimeofday;
print $time1, "\n";
foreach (@input1)
{
$bic1[$i1] = substr($_, 3, 11);
print FP_RES $bic1[$i1] . "\n";
$i1++;
}
$i2 = 0;
foreach (@input2)
{
$bic2[$i2] = substr($_, 3, 11);
print FP_RES $bic2[$i2] . "\n";
$i2++;
}
my $time2 = gettimeofday;
print $time2, "\n";
вывод: 1584030638.01605 1584030638.11776
время работы 0,1 секунды
Разница – в почти 16 раз. При масштабировании будет ещё хуже. Наверное у питона есть достоинства, но для моих элементарных задач питон - тормозное убожество.
Исправление beck, :
Все просто - вы просто не умеете им пользоваться.
Не поленился и напейсал простейший тест. Итак, имеется два текстовых файла, каждый примерно по 90 МВ, с длиной строки под 900 байт и количеством строк порядка 100 тысяч.
В каждой строке с 3 по 14 позицию есть некий код (AAAABBCCXXX), который нужно достать и сравнить различия между файлами (впрочем до этого на питоне дело не дошло – стало лень), на perl я это сравнение когда-то давно делал, поэтому в коде собирается массив, не стал переделывать.
Остановился я на достать из двух файлов этот код и построчно выгрузить в третий файл, тривиальнейшая задача, да и данных, прямо скажем, не гигабайты.
file_in_1 = open(sys.argv[1], 'rt')
file_in_2 = open(sys.argv[2], 'rt')
file_out = open(sys.argv[3], 'wt')
text_1 = file_in_1.read().split('\n')
text_2 = file_in_2.read().split('\n')
for temp in text_1:
file_out.write(temp[3:14] + '\n')
for temp in text_2:
file_out.write(temp[3:14] + '\n')
вывод: 2020-03-12 19:18:03.775619
2020-03-12 19:18:05.362468
время работы 1,59 секунд
open(FP_01, "<$ARGV[0]") || die "Can not open $ARGV[0] file";
open(FP_02, "<$ARGV[1]") || die "Can not open $ARGV[1] file";
open(FP_RES, ">$ARGV[2]") || die "Can not open $ARGV[2] file";
my @input1 = <FP_01>;
my @input2 = <FP_02>;
my @bic1;
my @bic2;
my $i1;
my $i2;
$i1 = 0;
my $time1 = gettimeofday;
print $time1, "\n";
foreach (@input1)
{
$bic1[$i1] = substr($_, 3, 11);
print FP_RES $bic1[$i1] . "\n";
$i1++;
}
$i2 = 0;
foreach (@input2)
{
$bic2[$i2] = substr($_, 3, 11);
print FP_RES $bic2[$i2] . "\n";
$i2++;
}
my $time2 = gettimeofday;
print $time2, "\n";
вывод: 1584030638.01605
1584030638.11776
время работы 0,1 секунды
Разница – в почти 16 раз. При масштабировании будет ещё хуже. Наверное у питона есть достоинства, но для моих элементарных задач питон - тормозное убожество.
Исправление beck, :
Все просто - вы просто не умеете им пользоваться.
Не поленился и напейсал простейший тест. Итак, имеется два текстовых файла, каждый примерно по 90 МВ, с длиной строки под 900 байт и количеством строк порядка 100 тысяч.
В каждой строке с 3 по 14 позицию есть некий код (AAAABBCCXXX), который нужно достать и сравнить различия между файлами (впрочем до этого на питоне дело не дошло – стало лень), на perl я это сравнение когда-то давно делал, поэтому в коде собирается массив, не стал переделывать.
Остановился я на достать из двух файлов этот код и построчно выгрузить в третий файл, тривиальнейшая задача, да и данных, прямо скажем, не гигабайты.
file_in_1 = open(sys.argv[1], 'rt')
file_in_2 = open(sys.argv[2], 'rt')
file_out = open(sys.argv[3], 'wt')
text_1 = file_in_1.read().split('\n')
text_2 = file_in_2.read().split('\n')
for temp in text_1:
file_out.write(temp[3:14] + '\n')
for temp in text_2:
file_out.write(temp[3:14] + '\n')
вывод: 2020-03-12 19:18:03.775619 2020-03-12 19:18:05.362468
время работы 1,59 секунд
open(FP_01, "<$ARGV[0]") || die "Can not open $ARGV[0] file";
open(FP_02, "<$ARGV[1]") || die "Can not open $ARGV[1] file";
open(FP_RES, ">$ARGV[2]") || die "Can not open $ARGV[2] file";
my @input1 = <FP_01>;
my @input2 = <FP_02>;
my @bic1;
my @bic2;
my $i1;
my $i2;
$i1 = 0;
my $time1 = gettimeofday;
print $time1, "\n";
foreach (@input1)
{
$bic1[$i1] = substr($_, 3, 11);
print FP_RES $bic1[$i1] . "\n";
$i1++;
}
$i2 = 0;
foreach (@input2)
{
$bic2[$i2] = substr($_, 3, 11);
print FP_RES $bic2[$i2] . "\n";
$i2++;
}
my $time2 = gettimeofday;
print $time2, "\n";
вывод: 1584030638.01605 1584030638.11776
время работы 0,1 секунды
Разница – в почти 16 раз. При масштабировании будет ещё хуже. Наверное у питона есть достоинства, но для моих элементарных задач питон - тормозное убожество.
Исходная версия beck, :
Все просто - вы просто не умеете им пользоваться.
Не поленился и напейсал простейший тест. Итак, имеется два текстовых файла, каждый примерно по 90 МВ, с длиной строки под 900 байт и количеством строк порядка 100 тысяч.
В каждой строке с 3 по 14 позицию есть некий код (AAAABBCCXXX), который нужно достать и сравнить различия между файлами (впрочем до этого на питоне дело не дошло – стало лень), на perl я это сравнение когда-то давно делал, поэтому в коде собирается массив, не стал переделывать.
Остановился я на достать из двух файлов этот код и построчно выгрузить в третий файл, тривиальнейшая задача, да и данных, прямо скажем, не гигабайты.
file_in_1 = open(sys.argv[1], 'rt')
file_in_2 = open(sys.argv[2], 'rt')
file_out = open(sys.argv[3], 'wt')
text_1 = file_in_1.read().split('\n')
text_2 = file_in_2.read().split('\n')
rec_1 = ""
for temp in text_1:
file_out.write(temp[3:14] + '\n')
#bics_1 = rec_1.split('\n')
rec_2 = ""
for temp in text_2:
file_out.write(temp[3:14] + '\n')
вывод: 2020-03-12 19:18:03.775619 2020-03-12 19:18:05.362468
время работы 1,59 секунд
open(FP_01, "<$ARGV[0]") || die "Can not open $ARGV[0] file";
open(FP_02, "<$ARGV[1]") || die "Can not open $ARGV[1] file";
open(FP_RES, ">$ARGV[2]") || die "Can not open $ARGV[2] file";
my @input1 = <FP_01>;
my @input2 = <FP_02>;
my @bic1;
my @bic2;
my $i1;
my $i2;
$i1 = 0;
my $time1 = gettimeofday;
print $time1, "\n";
foreach (@input1)
{
$bic1[$i1] = substr($_, 3, 11);
print FP_RES $bic1[$i1] . "\n";
$i1++;
}
$i2 = 0;
foreach (@input2)
{
$bic2[$i2] = substr($_, 3, 11);
print FP_RES $bic2[$i2] . "\n";
$i2++;
}
my $time2 = gettimeofday;
print $time2, "\n";
вывод: 1584030638.01605 1584030638.11776
время работы 0,1 секунды
Разница – в почти 16 раз. При масштабировании будет ещё хуже. Наверное у питона есть достоинства, но для моих элементарных задач питон - тормозное убожество.