2015 03 19 - 1993 02 17 = 22 01 02.
Искам да е възможно най-сбито и упростено но се сещам само за някакви така по-обемни функции а не са ми нужни. Не се сещам как точно да го направя в момента.

Code: Select all
$date = new DateTime('1995-03-13'); //или 13-03-1995
$now = new DateTime();
$interval = $now->diff($date);
echo $interval->y;
Няма ли друг варянт? Не ми се правят две напразни инстанции на класове само заради гъзарийката ми. Принципно става и е правилен варянта ти за което благодаря но процедурен код търся.Fakeheal wrote:Използвай DateTime класа и diff метода на php:
http://php.net/manual/en/datetime.diff.phpCode: Select all
$date = new DateTime('1995-03-13'); //или 13-03-1995 $now = new DateTime(); $interval = $now->diff($date); echo $interval->y;
Защото ако гониш производителност ще разбереш колко забавят инстанциите и зареждането в паметта при голям брой интерации в цикъл. Защотото ако имам 5000 интерации на цикъла горният код е по-бърз от създаването на две ненужни инстанции. Не е въпроса в писането на кода знам, че нейният варянт е правилен и то много повече спрямо моят но все пак е по-бавен заради зареждането на ненужни методи в паметта.lamerko wrote:Защо да правим нещо както трябва, щом можем да нацвъкаме някаква глупост
Искаш да кажеш, че всеки голям проект (те очевидно гонят производителност, иначе не им е на далаверка), не използват обекти и като цяло нямат взимане-даване с ООП, за да са бързи?dakata__92 wrote:Защото ако гониш производителност ще разбереш колко забавят инстанциите и зареждането в паметта при голям брой интерации в цикъл. Защотото ако имам 5000 интерации на цикъла горният код е по-бърз от създаването на две ненужни инстанции. Не е въпроса в писането на кода знам, че нейният варянт е правилен и то много повече спрямо моят но все пак е по-бавен заради зареждането на ненужни методи в паметта.lamerko wrote:Защо да правим нещо както трябва, щом можем да нацвъкаме някаква глупост
Вкарай малко логика. Защо 5000 пъти ще създаваш new DateTime(); (за сегашната дата)? Смяташ години, не часове, не секунди. Цикъла ти и половин ден да върви (poor you), надали ще изкара нещо невярно."Защотото ако имам 5000 интерации на цикъла горният код е по-бърз от създаването на две ненужни инстанции."
Code: Select all
$date = new DateTime('1993-11-17');
for($i=0;$i<5000;$i++){
$now = new DateTime();
Code: Select all
time classes: 0.39952707290649
time functions: 0.50110602378845
time classes no gc: 0.38848996162415
Code: Select all
time classes: 3.8634009361267
time functions: 5.0189640522003
time classes no gc: 3.9263830184937