Size: a a a

2020 April 16

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
то есть, чтобы донести жопу из пункта а в пункт бэ надо обязательно брать авто? или иногда достаточно велосипеда, а иногда и пешком?

флок — простой и часто достаточный способ коммуникации. вот когда недостаточный, тогда и можно о других вариантах думать. не всегда нужно именно чтобы быстро, а редис — отдельный сервис, про который ещё с админами надо договор заключить.
Ты ж видишь в тз: «сотую долю секунды». Флок домножит производительность на ноль :) Есть специальные средства межпроцессной синхронизации, специально для неё и придуманные
источник

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
Ты ж видишь в тз: «сотую долю секунды». Флок домножит производительность на ноль :) Есть специальные средства межпроцессной синхронизации, специально для неё и придуманные
гонево. флок на локальной фс точно несколько тыщ раз может в секунду выполниться
источник

K

Kolunchik in Modern::Perl
Надо бенчмарк
источник

AP

Anton Petrusevich in Modern::Perl
sub flock_unlock {
   flock($file, LOCK_EX) or die;
   flock($file, LOCK_UN) or die;
}

cmpthese(
   -2, {
       flock_unlock => \&flock_unlock
   }
);

flock_unlock 1807887/s           --
источник

SZ

Sergey Zhmylove in Modern::Perl
Kolunchik
Надо бенчмарк
++ flock vs sysv sema
источник

AP

Anton Petrusevich in Modern::Perl
1807887/s  — достаточная скорость, я думаю
источник

EV

Evgeniy Vansevich in Modern::Perl
Anton Petrusevich
1807887/s  — достаточная скорость, я думаю
локально?)
источник

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
++ flock vs sysv sema
не сомневаюсь, что семафор может оказаться быстрее
источник

AP

Anton Petrusevich in Modern::Perl
Evgeniy Vansevich
локально?)
перед этим
open(my $file, ">", "/tmp/test-flock.lock") or die;
источник

AP

Anton Petrusevich in Modern::Perl
я ж и говорил про локальность
источник

AP

Anton Petrusevich in Modern::Perl
изначально, говоря про флок
источник

AP

Anton Petrusevich in Modern::Perl
если чо, это амд 2400г
источник

K

Kolunchik in Modern::Perl
Anton Petrusevich
1807887/s  — достаточная скорость, я думаю
👍
источник

AP

Anton Petrusevich in Modern::Perl
sem_lock_unlock  489359/s              --            -73%
flock_unlock    1812055/s            270%              --
источник

AP

Anton Petrusevich in Modern::Perl
я таки их сравнил даже
источник

AP

Anton Petrusevich in Modern::Perl
вот код:
my $sem = IPC::Semaphore->new(IPC_PRIVATE, 1, S_IRWXU | IPC_CREAT) or die "IPC::Semaphore->new: $!";
$sem->setval(0, 1) or die "sem setval: $!";

sub sem_lock_unlock {
   $sem->op(0, -1, 0) or die "semop: $!";
   $sem->op(0, 1,  0) or die "semop: $!";
}
источник

SK

Sergei Khomutov in Modern::Perl
Sergey Zhmylove
Даже прикрученный редис, отдающий сиквенс, будет быстрее работать :)
Просто ради  интереса , как в этой задаче поможет сиквенсы ?
источник

SZ

Sergey Zhmylove in Modern::Perl
Sergei Khomutov
Просто ради  интереса , как в этой задаче поможет сиквенсы ?
Задача: генерация идентификатора. Сиквенс её решает очень хорошо :)
источник

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
вот код:
my $sem = IPC::Semaphore->new(IPC_PRIVATE, 1, S_IRWXU | IPC_CREAT) or die "IPC::Semaphore->new: $!";
$sem->setval(0, 1) or die "sem setval: $!";

sub sem_lock_unlock {
   $sem->op(0, -1, 0) or die "semop: $!";
   $sem->op(0, 1,  0) or die "semop: $!";
}
Эхх, жаль сейчас нет времени.. я бы с другими модулями потестил
источник

SK

Sergei Khomutov in Modern::Perl
Sergey Zhmylove
Задача: генерация идентификатора. Сиквенс её решает очень хорошо :)
В этом да, хорошая вещь. А просто Data::UUID с колизией может нагенерить ?
источник