Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Можно ли как-то сократить этот код?


Recommended Posts

06.09.2022 в 12:49, Exploits сказал:

не в ту степь вообще)) где пхп а где база!

доступ к базе через php ))) кодом
С точки зрения скорости.. написать
for () {
  query('insert')
}
может оказаться быстрее, чем сформировать массив

а дальше  .. вопрос опыта
 

Надіслати
Поділитися на інших сайтах

06.09.2022 в 12:54, chukcha сказал:

доступ к базе через php ))) кодом
С точки зрения скорости.. написать
for () {
  query('insert')
}
может оказаться быстрее, чем сформировать массив

а дальше  .. вопрос опыта
 

не знаю быстрее ли в каждой итерации делать запрос, наверное многое зависит от самой базы и самого запроса, тесты такие не делал

Надіслати
Поділитися на інших сайтах

06.09.2022 в 12:56, Exploits сказал:

не знаю быстрее ли в каждой итерации делать запрос,

конечно не быстрее.

но если у тебя 2-3 запроса - разница несущественна
Но если, например, импорты то очень существенна.

Надіслати
Поділитися на інших сайтах

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip

  • +1 1
Надіслати
Поділитися на інших сайтах

06.09.2022 в 14:43, SergeTkach сказал:

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip 35 \u041a\u0431 · 0 скачиваний

Если использовать полный код везде судя по Вашему тесту, будет невероятная скорость, но и простыня будет такой же невероятной. Поэтому целесообразнее использовать "сокращенный код (незначительно медленее)" золотая середина между краткостью, скоростью и размером кода

Надіслати
Поділитися на інших сайтах


06.09.2022 в 14:43, SergeTkach сказал:

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip 35 \u041a\u0431 · 0 скачиваний

Прикольно)) А если переменных 100 000:D

Ну а серьезно, то где пару строк кода а где 4 или 6 тыс строк кода, разница есть все же

Но да, выполняется дольше, однако вопрос изначальный был по уменьшению а не ускорению.

ТС просто спросил а тут уже и тесты пошли ахахах, но зато обсудили все варианты

Надіслати
Поділитися на інших сайтах

Не, ну а если настройки модуля, то там же тернарный оператор не канает. Там elseif.

Значит надо писать либо полный код, либо массив.

 

Массив - я пробовал.

 

Также пробовал обработку полей через отдельный метод, чтобы было коротко, но и понятнее:

$data['status'] = $this->field('status');

 

У меня даже есть недописанный шаблон, в котором я застрял на всяких финтиклюшках, которые заставляли меня думать больше о финтиклюшках, чем о задаче...

 

В конце-концов есть так называемый код-стайл. Надо писать так, как принятно в конкретной системе. Тогда все будет только легче.

Надіслати
Поділитися на інших сайтах

06.09.2022 в 15:07, SergeTkach сказал:

В конце-концов есть так называемый код-стайл.

для одного/двух решений, для одной версии
 

		$parameters = [
			'product_table'  => [],
			'product_label'  => [],
			'product_status' => 0
		];
		
		foreach ($parameters as $parameter => $default) {
			if (isset($this->request->post[$this->module_name . $parameter])) {
				$data[$this->module_name . $parameter] = $this->request->post[$this->module_name . $parameter];
			} elseif ($this->config->has($this->module_name . $parameter)) {
				$data[$this->module_name . $parameter] = $this->config->get($this->module_name . $parameter);
			} else {
				$data[$this->module_name . $parameter] = $default;
			}
		}


Т.е.. меняешь только  массив и название модуля

Надіслати
Поділитися на інших сайтах

В 06.09.2022 в 14:43, SergeTkach сказав:

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip 35 \u041a\u0411 · 1 download

image.thumb.png.b7450d8a6d05c632e0305013b54c7c55.png

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.