Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.107.96] |
|
Страницы: (11) « Первая ... 8 9 [10] 11 все ( Перейти к последнему сообщению ) |
Сообщ.
#136
,
|
|
|
Я вот для себя еще не решил хорош этот виртуальный дом, или нет. Куски разметки в js пока выглядят диковато, но, судя по популярности, не так страшен ч0рт, как его малюют. Надо будет как-нить попробовать что-нибудь наструячисть на реакте. Добавлено ЗЫ в ангуляре лично я разочаровался, по крайней мере в первом. Как там во втором не знаю. |
Сообщ.
#137
,
|
|
|
Цитата Астарот @ Я вот для себя еще не решил хорош этот виртуальный дом, или нет. Куски разметки в js пока выглядят диковато, но, судя по популярности, не так страшен ч0рт, как его малюют. Надо будет как-нить попробовать что-нибудь наструячисть на реакте. Назови 10 отличий между реактом и FXML Цитата Астарот @ ЗЫ в ангуляре лично я разочаровался, по крайней мере в первом. Как там во втором не знаю. Эт чойто? Вроде всё по феншую делали, и сервисы красивенькие, и di, и легковесные обвязки над нодами через ng-X атрибуты |
Сообщ.
#138
,
|
|
|
Цитата Serafim @ Назови 10 отличий между реактом и FXML Я не знаю что такое fxml Цитата Serafim @ Эт чойто? Вроде всё по феншую делали, и сервисы красивенькие, и di, и легковесные обвязки над нодами через ng-X атрибуты У него бойлерплейта много. Вот я знал ангуляр, потом пару лет его не использовал, посмотрел в готовый проект - темный лес Портянки кода, который нужен только самому ангуляру что б жить, пока до бизнеслогики ради которой все затевалось докопаешься - рехнешься... В остальном-то все довольно хорошо, и di, и деление на сервисы, но вот эта тяжеловесность убила. |
Сообщ.
#139
,
|
|
|
Цитата Астарот @ Я не знаю что такое fxml Ты же джавист, Карл! Почему я знаю шаблонизатор JavaFX, а ты нет? |
Сообщ.
#140
,
|
|
|
Цитата Serafim @ Ты же джавист, Карл! Почему я знаю шаблонизатор JavaFX, а ты нет? Потому что я джавист, который пишет сервера, а не клепает мордочки Морда у нас как раз на ангуляре, и именно в нее я заглянул, когда ей исполнилось полтора года отроду |
Сообщ.
#141
,
|
|
|
Я тоже сервер-сайд разраб, но на симфони. И как бы, я о чём...
Ах, да... Тебе не стыдно не знать вообще всё о жабе? У тебя байткод от зубов должен отскакивать! А ещё должен свободно владеть котлином и скалой, а мысли излагать на греилс. |
Сообщ.
#142
,
|
|
|
Как много всего я оказывается должен
|
Сообщ.
#143
,
|
|
|
продолжаю закручивать саморезы!
вот еще 4 теста, в которых выполняется проверка на объем памяти с разной реализацией гипотетического объекта Person Прикреплённый файлTestCases.zip (3,07 Кбайт, скачиваний: 100) результаты приобрели более контретный вид, а именно: 1 тест (возврат объекта литерала с методами): ~11 Mb; 2 тест (возврат объекта литерала, но с выносом реализации методов и последующим их вызовом (мой предложеный изначально вариант )): ~6 Mb; 3 тест (возврат объекта литерала, но с выносом реализации методов и последующей их привязкой): ~5.3 Mb; 4 тест (возврат объекта литерала, но с указанием ссылок на локальные функции): ~6 Mb. тесты проверял в Developer Tools Google Chrome 59.0 вопросы? |
Сообщ.
#144
,
|
|
|
Цитата Cfon @ ты лентяй а оптимизптор вряд ли. person.toString = function () { return 'todo todo todo todo todo todo todo todo todo todo todo todo '+ 'todo todo todo todo todo todo todo todo todo todo todo todo '+ 'todo todo todo todo todo todo todo todo todo todo todo todo '+ 'todo todo todo todo todo todo todo todo todo todo todo todo '+ 'todo todo todo todo todo todo todo todo todo todo todo todo '+ |
Сообщ.
#145
,
|
|
|
Cfon, кто тебя так код писать учил?
- Табы + пробелы - Форматирования никакого - Концы строк не обрезаны - Переводы строк в crlf - BOM? Srsly? У меня JSLint сходит с ума, а если это дело ещё в VCS засунуть, то там вообще начнётся дичь... Я к тому, что обычно за такое сразу на костёр и не важно на каком языке пишешь, и какой код в конце получается, никто даже смотреть не будет - отправят вычищать. |
Сообщ.
#146
,
|
|
|
Цитата Serafim @ Cfon, кто тебя так код писать учил? Не мешай ему - он изучает js позавчерашнего дня, и кодит так, как кодили наши предки Прикреплённый файлfirst_script_html.gif (10,38 Кбайт, скачиваний: 337) |
Сообщ.
#147
,
|
|
|
Цитата Астарот @ Цитата Serafim @ Cfon, кто тебя так код писать учил? Не мешай ему - он изучает js позавчерашнего дня, и кодит так, как кодили наши предки Прикреплённый файлfirst_script_html.gif (10,38 Кбайт, скачиваний: 337) Да пофигу на это всё. Может и правильно делает, что с основ начинает (которые в некоторых случаях уже задепрекейчены). Человек говорил, что сишки шарит, а значит хоть какое-то представление о конвенциях должно быть (все упомянутые мною выше относятся вообще любому языку программирования, ну разве только кроме эзотерических). А тут смотришь на код и офигиваешь |
Сообщ.
#148
,
|
|
|
Цитата K313 @ ты лентяй а оптимизптор вряд ли. смотри мы рассматриваем случай 1, который приводит к большему расходу памяти так? у меня как раз TestCase1.html показывает 11 Мб, остальные 3, включая и мой вариант ~6 Mb, что меньше на 5Мб, если оптимизатор опмизировал 3 последних случая, тогда почему 1 вариант расходует больше памяти? пс. возможно у тебя какие другие цифры? тогда приведи сюда. Добавлено Цитата Serafim @ Cfon, кто тебя так код писать учил? - Табы + пробелы - Форматирования никакого - Концы строк не обрезаны - Переводы строк в crlf - BOM? Srsly? У меня JSLint сходит с ума, а если это дело ещё в VCS засунуть, то там вообще начнётся дичь... Я к тому, что обычно за такое сразу на костёр и не важно на каком языке пишешь, и какой код в конце получается, никто даже смотреть не будет - отправят вычищать. ну ну ну спокойно уважаемый! меня учил так писать Керниган и Ричи, знаешь их? так вот при кодировании на JS я юзаю их стиль, щас не будем развивать тему оформления кода ок? а данный код я набирал в Notepad++ там у меня все отображает нормуль, я хз где ты смотрел и куда Прикреплённый файлpic.png (32,43 Кбайт, скачиваний: 297) по теме есть что сказать? нет? я так и думал Добавлено Цитата Астарот @ Не мешай ему - он изучает js позавчерашнего дня, и кодит так, как кодили наши предки именно изучаю! пока другие не будем указывать пальцем, только балтают языком чувачок ты наверное кроме халоворлд не знаешь как написать, а туда же учишь, сначала покажи, что умеешь потом учи ясно? |
Сообщ.
#149
,
|
|
|
Цитата Cfon @ а данный код я набирал в Notepad++ |
Сообщ.
#150
,
|
|
|
Цитата Cfon @ пс. возможно у тебя какие другие цифры? тогда приведи сюда. вообще, когда провожу какие нибудь тесты, то стараюсь их проводить в условиях обычного пользователя. Мне же главное знать, как будут выполняться мои скрипты на компьютере у клиента?! Пойдёт его машина топором на дно или будет летать как бабочка?! Поэтому у меня даже настройки во всех браузерах обычно по умолчанию стоят. Конечно у узеров разные комьютеры, но для сравнения нагрузки от одного кода с другим - это не главное... А вот в разных браузерах, один и тот же код, может вести себя по разному. В одном всё летает, а в другом создаётся заметная нагрузка (слежу в основном в обычном TaskManager) Для нашего же случая, чтоб конкретно по потреблению памяти судить, я отключал у компа виртуальную память и потом опять же в TaskManager смотрел, как память тратится. Конечно, думаю интерпретатору javascript ни кто не помешает, что-то временно скинуть на диск, если память уже впритык, НО во время тестов, я такого не заметил. То есть если память доходила до предела, то скрипт молча вешался Кроме того, в разных браузерах сборщики мусора работают по разному. Например у меня в Опере память быстро освобождалась, при каждой перегрузке страницы. И потребление показывало практически одинакого при всех повторах одного и того же теста. То есть видно, что память освобождается каждый раз и всё начинается с нуля. А вот в другом (или в FF или в IE, не помню уже), там при перегрузке страницы было только увеличение потребления памяти, и так можно было 3 - 4 раза перегрузить страницу, пока не увидишь, что было произведено освобождение памяти... У Оперы сам голый процесс занимает у меня где-то 60 Мб памяти, её я от каждого результата сразу вычитаю... Далее тестю var all_obj = []; var all_res = []; var obj = null; var mtime = Date.now(); for ( var j = 0; j < 1000000; j++ ) { // TEST x } alert('Created '+j+' objects!\n\nall_obj[ '+(--j)+' ] = "'+all_obj[ j ]+'"\n\nall_result[ '+j+' ] = "'+all_res[ j ]+'"\n\nmtime = '+(Date.now()-mtime) ); TEST 1 all_obj.push( 0 ); // массив размером в -> 10 Mln = 35 Mb., mtime = 900 msec TEST 2 all_obj.push( { } ); // пустые объекты -> 10 Mln = 310 Mb., mtime = 7.500 ... 9.000 msec TEST 3 all_obj.push( { name: 'ooo_'+j, age: j, friends: [] } ); // объекты со свойствами -> 4 Mln = 350 Mb., mtime = 7.000 msec all_res.push( 123 * Math.random( ) ); // с добавкой массива для результатов -> 4 Mln = 405 Mb., mtime = 9.000 ... 10.000 msec Потом значит, использовал прогу HxD, делал снимок памяти и находил там все созданные объекты от "ooo_0" до "ooo_3999999". Все были там, ни кто ни куда не пропал. TEST 4 all_obj.push( { name: 'ooo_'+j, age: j, friends: [], foo : function( param ){return param * Math.random();} } ); all_res.push( all_obj[ j ].foo( 123 ) ); // с встроенным методом и его выполнением -> 1 Mln = 260 Mb., mtime = 30.000 msec TEST 5 all_obj.push( { name: 'ooo_'+j, age: j, friends: [] } );// с пристроенным (не знаю, как называется) методом и его выполнением -> 1 Mln = 145 Mb., mtime = 5.000 msec all_obj[ j ].foo = function( param ){return param * Math.random();}; all_res.push( all_obj[ j ].foo( 123 ) ); То есть первое подозрение было, что при объявлении функции прямо в объекте, в памяти создаётся новый блок с телом функции для каждого нового объекта. Хотя по моему мнению, тело функции должно было быть одно на все объекты, а у каждого объекта в структуре foo : <STRUCTUR> должна была бы лежать ссылка на память, где это тело. В тесте 5 похоже так и есть, функция одна, а в foo : <STRUCTUR> каждого объекта лежит ссылка на неё... Потом повторил тест 4 но без выполнения метода foo, думал может выполнение столько тратит. Но результат не сильно изменился. // повторение 4-го теста БЕЗ выполнения встроенного метода foo -> 1 Mln = 235 Mb., mtime = 22.000 msec Сейчас сижу вот и думаю (тесты месяц назад же писал), может это <STRUCTUR type="function"> такая большая (160 байт, вернее 160 - 45 = 115 байт). Тогда при встроенном методе, у каждого foo : <STRUCTUR> лежит ссылка на свой <STRUCTUR type="function">, то есть эта структура <STRUCTUR type="function"> у каждого объекта своя. А вот у каждой этой структуры <STRUCTUR type="function"> уже лежит ссылка на память, где находится само тело функции, и эта память одна на все эти структуры, то есть тело функции уже в одном экземпляре. А когда функция прикручена, то структура <STRUCTUR type="function"> одна на всех, а у каждого объекта в foo : <STRUCTUR> лежит ссылка на эту единственную для всех <STRUCTUR type="function">. Таким образом и сохраняется правильное поведение javascript при проверке для встроенных методов all_obj[ x.foo ] == all_obj[ y.foo ] // false all_obj[ x.foo ] == all_obj[ y.foo ] // true Чтоб проверить это надо повторить тест 4, но уже с бооольшим телом функции. Только мне сейчас и влом и времени нету на это. |