powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Пятничный "что нового узнали за неделю" треп.
25 сообщений из 104, страница 4 из 5
Пятничный "что нового узнали за неделю" треп.
    #38136454
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczОзверинДа само собой круто, но нафига?:)
Например, Query Language и binding с compile time проверками.

Может возникнуть ситуация с generic - когда вначале радовались, и описывали все подряд...а потом появились классы типа
Код: java
1.
ClassA<K,V,C,N,P,D> extends ClassB<K,V,C,N,P,D>

и стали плеваться и искать некий компромисс. Скажем твердое и решительное нет замыканиям, ссылкам на методы и прочие лямба выражения;) Я в том плане, что в java по моему хватает проблем, начиная от многопоточности и безопасной инициализации объекта, заканчивая условной кроссплатформенностью (про win и linux можно поспорить, но как только вспоминаем j2me - начинаются танцы с бубном)
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38136467
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинМожет возникнуть ситуация с generic - когда вначале радовались, и описывали все подряд...а потом появились классы типа
Код: java
1.
ClassA<K,V,C,N,P,D> extends ClassB<K,V,C,N,P,D>



А меня генерики радуют до сих пор. Клинических случаев у себя на проектах ещё не наблюдал. Единственное что не всегда с наскока легко понять стоит ли тут сделать generic или лучше обычный overload. Потому как всё зависит от ситуации.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38136492
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинBlazkowiczпропущено...

Например, Query Language и binding с compile time проверками.

Может возникнуть ситуация с generic - когда вначале радовались, и описывали все подряд...а потом появились классы типа
Код: java
1.
ClassA<K,V,C,N,P,D> extends ClassB<K,V,C,N,P,D>

и стали плеваться и искать некий компромисс. Скажем твердое и решительное нет замыканиям, ссылкам на методы и прочие лямба выражения;) Я в том плане, что в java по моему хватает проблем, начиная от многопоточности и безопасной инициализации объекта, заканчивая условной кроссплатформенностью (про win и linux можно поспорить, но как только вспоминаем j2me - начинаются танцы с бубном)
Проблем с многопоточностью нет там, где этой многопоточности нет вообще. Но там ее эмулируют через спагетти из колбаков и костыля "процесс на обработчик".
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38136646
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагманно вчера снова открыл freepascal - это как голоток свежего воздуха.
function of object и вложенные функции, например - киллер фичи, устраняющие необходимость каких-либо паттернов и т.п..У ява-рантайма есть одно, но очень важное преимущество: можно взять классы созданные в одной версии и использовать их в другой. Можно изменить реализацию класса и, опять-таки, использовать его без каких-либо изменений других частей проекта.
CORBA/(D)SOM, теоретически, обеспечивают и такую возможность, но (D)SOM вообще умер, а желающих использовать CORBA - как-то не очень много.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38144220
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cейчас, пока ещё не вышла Java8 с няшными замыканиями, я обучу вас некоторым анальным упражнениям:

1) Создаем интерфейсы
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public interface Function<A> {
	A call();
}
public interface Function1<A, A1> {
	A call(A1 a1);
}

...

public interface Function1<A, A1..AN> {
	A call(A1 a1,.. AN);
}

public interface Procedure  {

	void call();
}
...
public interface Procedure2<A1, A2,.. AM> {

	void call(A1 a1, A2 a2, ... A3 aM);
}

]|>

public interface Function<A> {
A call();
}
public interface Function1<A, A1> {
A call(A1 a1);
}

...

public interface Function1<A, A1..AN> {
A call(A1 a1,.. AN);
}

public interface Procedure {

void call();
}
...
public interface Procedure2<A1, A2,.. AM> {

void call(A1 a1, A2 a2, ... A3 aM);
}

" border="0" align="center" alt="Картинка с другого сайта."/>
, где N и M удовлетворяют средней запущенности вашего проекта.

Создаём публичные поля (ну можно и геттеры, не суть)
Код: java
1.
2.
3.
4.
5.
6.
public final Function<Integer,Integer,Integer> makeIntSum = new Function<>(){
@Override   
public Integer call(Integer a, Integer b){
  return a + b;
}
}



И - профит, можно даже скукоживать как полноценные замыкания:

Код: java
1.
2.
3.
4.
5.
6.
Function<Integer> add2 = new Function<>(){
@Override
public Integer call(Integer c){
  return makeIntSum( 2, c );
}
}



разве не няшно?
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38144221
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну там только
Код: java
1.
2.
Function2<Integer,Integer,Integer>
Function1<Integer,Integer>


соответственно
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38144222
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и
Код: java
1.
makeIntSum.call( 2, c )



надеюсь это не испортит общие впечатления от примера
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38144247
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманCейчас, пока ещё не вышла Java8 с няшными замыканиями, я обучу вас некоторым анальным упражнениям:

1) Создаем интерфейсы
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public interface Function<A> {
	A call();
}
public interface Function1<A, A1> {
	A call(A1 a1);
}

...

public interface Function1<A, A1..AN> {
	A call(A1 a1,.. AN);
}

public interface Procedure  {

	void call();
}
...
public interface Procedure2<A1, A2,.. AM> {

	void call(A1 a1, A2 a2, ... A3 aM);
}

]|>

public interface Function<A> {
A call();
}
public interface Function1<A, A1> {
A call(A1 a1);
}

...

public interface Function1<A, A1..AN> {
A call(A1 a1,.. AN);
}

public interface Procedure {

void call();
}
...
public interface Procedure2<A1, A2,.. AM> {

void call(A1 a1, A2 a2, ... A3 aM);
}

" border="0" align="center" alt="Картинка с другого сайта."/>
public interface Function<A> {
A call();
}
public interface Function1<A, A1> {
A call(A1 a1);
}

...

public interface Function1<A, A1..AN> {
A call(A1 a1,.. AN);
}

public interface Procedure {

void call();
}
...
public interface Procedure2<A1, A2,.. AM> {

void call(A1 a1, A2 a2, ... A3 aM);
}

[/src]" border="0" align="center" alt="Картинка с другого сайта."/>
, где N и M удовлетворяют средней запущенности вашего проекта.

Создаём публичные поля (ну можно и геттеры, не суть)
Код: java
1.
2.
3.
4.
5.
6.
public final Function<Integer,Integer,Integer> makeIntSum = new Function<>(){
@Override   
public Integer call(Integer a, Integer b){
  return a + b;
}
}



И - профит, можно даже скукоживать как полноценные замыкания:

Код: java
1.
2.
3.
4.
5.
6.
Function<Integer> add2 = new Function<>(){
@Override
public Integer call(Integer c){
  return makeIntSum( 2, c );
}
}



разве не няшно?
Ты тоже считаешь баланс по мобилкам в жабе, а не в DB?
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38145701
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

сидел минут 15 фтыкал, что вообще происходит ;)
Запущенность проекта многократно увеличицо..как по мне.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38185891
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поднимаю же.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38186488
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отрефакторил велосипедный орм, например https://github.com/aelio/odb
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38224756
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Узнал что foreach - непозволительно затратная операция.

Доступ к public полю в разы быстрее геттера, а массив - в разы быстрее public поля.

Гори оно огнем - выходит, надо выбирать, или реалтайм или ООП, какбы.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38224867
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманГори оно огнем - выходит, надо выбирать, или реалтайм или ООП, какбы.
это всегда так было.
Или ООП или быстро
Или ооп маленький размер программы
Или ООП или маленький вес проги в оперативке.
Всё в мире с жертвами.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226019
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Доступ к public полю в разы быстрее геттера,

А где вы это узнали? Где-то в жж elizarov писал и приводил док-ва, что геттеры в итоге компилятся в одну ассемблерную команду.
И верить я склонен ему.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226268
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я как-то больше верю системному таймеру, который после замены геттера на паблик, показывает вдвое меньшее время. Не знаю, связано ли это со спецификой задачи, и того, в каком порядке написаны мат.операции с результатом этого паблика/геттера.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226273
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманНу я как-то больше верю системному таймеру, который после замены геттера на паблик, показывает вдвое меньшее время. Не знаю, связано ли это со спецификой задачи, и того, в каком порядке написаны мат.операции с результатом этого паблика/геттера.
Что тестировали? Java интепретатор?
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226352
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманУзнал что foreach - непозволительно затратная операция.
Для массива или коллекции? Для какой-то конкретной коллекции? Не пробовали разобраться почему?

ЛагманДоступ к public полю в разы быстрее геттера, а массив - в разы быстрее public поля.
Пишут что если таки сделать final акцессор или дождаться JIT компиляции, то с большой вероятностью getter заинлайнится.

ЛагманГори оно огнем - выходит, надо выбирать, или реалтайм или ООП, какбы.
Ну, realtime на любом языке высокого уровня требует ухищрений с оглядкой и на ОС и на CPU. Тот же Disruptor - набор хаков.
Где-то был забавный пример про бины на базе Unsafe.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226386
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

наличие пустого foreach(Object obj: arrayList) {} занимало 95% времени метода, это при том что в нем было решение 1024*1024 квадратных уровнений :)
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226388
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, т.е. и arrayList там пустой был
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226395
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя может уравнений поменьше было.. но не менее 2-3к точно
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226453
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагманну, т.е. и arrayList там пустой был
Возможно это очень часто происходило, поэтому создалось огромное количетство ненужных интераторов. А почему не массив?
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38226593
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лагман - вы делаете какие-то неправильные тесты или тесты правиьлные, но вывод вы делаете неверно, или используете неправильную jvm. С тестами в яве надо быть очень осторожным.

foreach - в жаве нету, есть for(T a:b), которое вы, по всей вероятности, имели в виду. Отличается от итерации по int она тем, что при каждом входе создает дополнительный обьект Iterator, только и всего. Соответственно "Узнал что foreach - непозволительно затратная операция." совершенно неверная формулировка. Таковой она будет в редких случаях, а именно - когда говнокодеры много раз в цикле делают цикл foreach. А еще, в седьмой яве оно создается в стеке, если этот итератор удовлетворяет определенным уловиям для эскейп-анализа (а это так, скорей всего - нет финализатора и ссылка не покидает области видимости). Поэтому все равно foreach должен быть быстр.

геттеры вообще часто инлайнятся (в серверной jvm), то есть на уровне кода (после jit) не делается call ради чтения одной ячейки.

Вместо ArrayList<Integer> можно можно юзать классы либы trove. На больших данных это сэкономит и память и процессорное время. Хотя и с trove можно умудриться сделать тест, который покажет не то.
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38227586
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

мне важнее чтобы код выполнялся, а не ваши домыслы про версии jvm
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38228333
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманУзнал что foreach - непозволительно затратная операция.

Доступ к public полю в разы быстрее геттера, а массив - в разы быстрее public поля.

Гори оно огнем - выходит, надо выбирать, или реалтайм или ООП, какбы.

А тесты можете выложить?
...
Рейтинг: 0 / 0
Пятничный "что нового узнали за неделю" треп.
    #38228335
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагманотрефакторил велосипедный орм, например https://github.com/aelio/odb

а чей орм то?
...
Рейтинг: 0 / 0
25 сообщений из 104, страница 4 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / Пятничный "что нового узнали за неделю" треп.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]