Konstantin
я навскидку не могу придумать разницу, кроме частичного индекса постгреса
Konstantin
ничего не понял
Konstantin
но даже сходил в документацию
Konstantin
conflict_target
Specifies which conflicts ON CONFLICT takes the alternative action on by choosing arbiter indexes. Either performs unique index inference, or names a constraint explicitly. For ON CONFLICT DO NOTHING, it is optional to specify a conflict_target; when omitted, conflicts with all usable constraints (and unique indexes) are handled. For ON CONFLICT DO UPDATE, a conflict_target must be provided.
Konstantin
It is often preferable to use unique index inference rather than naming a constraint directly using ON CONFLICT ON CONSTRAINT constraint_name.
Konstantin
https://www.postgresql.org/docs/current/sql-insert.html#:~:text=ON%20CONFLICT%20DO%20NOTHING%20simply,can%20perform%20unique%20index%20inference.
Konstantin
короче, базе нет никакой разницы, что вы там укажете, правильным способом является использование индекса, а не констрейнта. и в целом доктрина всё правильно делает, и да, никаких проблем с апсертами тут не будет, вы не дочитали
Nikolay
Konstantin
а что там указал?
Konstantin
надо писать ON CONFLICT (email) DO UPDATE SET ...
Konstantin
email - это имя поля
Konstantin
ну значит индекса такого нет ещё?
Nikolay
Nikolay
Еще раз посмотрел, индекс есть
Konstantin
тем не менее, оно так должно работать, проблема в чем-то ещё - невнимательность, опечатка или типа того
Юра
В тему супер небагованного пхпшторма
Юра
кто-то сталкивался с таким что не показывает директории?
Юра
Юра
рестарт и чистка кеша не помогает
Юра
помогло убить .idea папку
Алексей
помогло убить .idea папку
только это и помогает,
я один раз вообще шторм переустановил из-за этого бага, но не помогло
Igor
Юра
Вы вот спрашиваете почему типо не пхп а джава. Ну вот пример. Накидал я значит quick sort. Там и там. Алгоритм один в один.
PHP в 10!! раз медленне. Ну что за гребаный стыд
Юра
и это при том что в пхп не просто массив а SplFixedArray
Igor
Dmitriy
большинству обычных проектов похер, там БД в основном влияет на перфоманс
Igor
Юра
Ну похер не похер но достичь 3мс ответа от рест апи на пхп симфони не получается ни при каких раскладах
Юра
Ну голого апи, без БД
Burlakovmax
Юра
На спринге 3-5 мс
Igor
На спринге 3-5 мс
А что за код, который в 10 раз медленнее? Есть возможность показать?
Burlakovmax
Кстати не нашел где Хищника посмотреть, аж расстроился, так как после битв арморов тут был настроен посмотреть:/
Юра
Igor
Кстати, не знает кто, есть ли у центрифуги (centrifugo) возможность "вложенных" неймспейсов? category:poher/product:1213?
Юра
А что за код, который в 10 раз медленнее? Есть возможность показать?
for ($x = 1; $x <= 100; $x++) {
$arr = range(0, 10000000, 1);
shuffle($arr);
$arr = SplFixedArray::fromArray($arr);
$timerStart = microtime(true);
quickSort($arr, 0, count($arr) - 1);
$timerEnd = microtime(true) - $timerStart;
var_dump($timerEnd);
}
function quickSort(SplFixedArray &$arr, int $start, int $end)
{
if ($start < $end) {
$idx = partition($arr, $start, $end);
quickSort($arr, $start, $idx - 1);
quickSort($arr, $idx + 1, $end);
}
}
function partition(SplFixedArray &$arr, int $start, int $end): int
{
$pivot = $arr[$start];
$i = $start;
$j = $end + 1;
while($i < $j) {
do {
$i++;
} while ($i <= $end && $arr[$i] <= $pivot);
do {
$j--;
} while ($j >= $start && $arr[$j] > $pivot);
if ($i < $j) {
$tmp = $arr[$j];
$arr[$j] = $arr[$i];
$arr[$i] = $tmp;
}
}
$tmp = $arr[$j];
$arr[$j] = $arr[$start];
$arr[$start] = $tmp;
return $j;
}
Igor
for ($x = 1; $x <= 100; $x++) {
$arr = range(0, 10000000, 1);
shuffle($arr);
$arr = SplFixedArray::fromArray($arr);
$timerStart = microtime(true);
quickSort($arr, 0, count($arr) - 1);
$timerEnd = microtime(true) - $timerStart;
var_dump($timerEnd);
}
function quickSort(SplFixedArray &$arr, int $start, int $end)
{
if ($start < $end) {
$idx = partition($arr, $start, $end);
quickSort($arr, $start, $idx - 1);
quickSort($arr, $idx + 1, $end);
}
}
function partition(SplFixedArray &$arr, int $start, int $end): int
{
$pivot = $arr[$start];
$i = $start;
$j = $end + 1;
while($i < $j) {
do {
$i++;
} while ($i <= $end && $arr[$i] <= $pivot);
do {
$j--;
} while ($j >= $start && $arr[$j] > $pivot);
if ($i < $j) {
$tmp = $arr[$j];
$arr[$j] = $arr[$i];
$arr[$i] = $tmp;
}
}
$tmp = $arr[$j];
$arr[$j] = $arr[$start];
$arr[$start] = $tmp;
return $j;
}
А на джаве как?
Юра
class Solution {
public void solve(int[] data) {
quickSort(data, 0, data.length - 1);
}
private void quickSort(int[] data, int start, int end) {
if (start < end) {
int idx = partition(data, start, end);
quickSort(data, start, idx - 1);
quickSort(data, idx + 1, end);
}
}
private int partition(int[] data, int start, int end) {
int pivot = data[start];
int i = start;
int j = end + 1;
while (i < j) {
do {
i++;
} while (i <= end && data[i] <= pivot);
do {
j--;
} while (j >= start && data[j] > pivot);
if (i < j) {
int tmp = data[j];
data[j] = data[i];
data[i] = tmp;
}
}
int tmp = data[j];
data[j] = data[start];
data[start] = tmp;
return j;
}
}
Юра
ну там я вырезал цикл
Юра
и замер
Юра
Ну вот на 10млн айтемов пхп 10 секунд, джава 0.8 сек
Юра
Я ума не приложу почему такая разница
Igor
Юра
Та не
Юра
Просто старт, энд разница
Юра
Меряю только алгоритм без подготовки данных
Юра
Скорее всего в доступе к элементам массива
Юра
В джаве скорее всего это просто получение инта по адресу, в пхп думаю все сложнее под капотом
Юра
Хотя не просто получение инта еще выход за пределы чекается. Но всеравно в пхп думаю там видимо из-за типов или ещё чего-нибудь все не так просто
Юра
Ведь SplFixedArray это просто контейнер который может хранить любые типы
Igor
Юра
6.7 сек
Юра
быстрее чем SplFilexArray )
Юра
удивительно
Сергей
а если еще всю типизацию убрать?)
Юра
6.5
Юра
я не знаю может джава там какую-то хвостовую рекурсию применяет или еще чего-то там
Nikolay
https://habr.com/ru/post/280262/
Юра
меняет вызов на цикл хз короче
The Ant
The Ant
у меня на 48ядерном сервере 1мс хелоу ворлд работает :D
Павел
Павел
пользуйтесь бесплатно
The Ant
The Ant
в котором нифига не наставлено )
Павел
без всяких ваших костылей в виде симфони)
The Ant
ну такой се тралинг
Павел
окау(
The Ant
а вообще, пообмажутся своими докерами и страдают
Павел
Andrii
Konstantin
horse тред не читал. ты до ds уже добрался?
Юра
куда?
Andrii
куда?
https://www.php.net/manual/en/book.ds.php
Юра
та нафига мне эти датаструктуры чтобы сделать quicksort
Konstantin
побенчить чисто