|
|
||||||
|
#1
|
|
|
|
|
witam!
już w temacie wstępnie naświetliłem mój problem. właśnie czy java daje taką możliwość, aby w jakiejś zmiennej przechowywany był warunek uzależniony od innych zmiennych. może nie do końca jasno się wyrażam dlatego napiszę przykład : public void sprawdzWarunek(warunek) { if(warunek) { |
|
|
|
#2
|
|
|
|
|
pl.comp.lang.java.getSenderByName("*Łukasz Nowicki*").quote();
> public void setWarunek(warunek) { > > warunek = { zm1 == 1 && zm2 == 2 ... } > } > > czy można coś takiego zrobić ?? Nie, użyj lispa :> > pewnie zapytacie po co mi takie kombinacje, skoro można zrobić po > prostu jednego if'a, chodzi głównie o optymalizację, mam aplikację > która będzie wywoływać if'a ok 100 razy/sek. w kilkunastu wątkach i po > każdym wywołaniu musi wysłać komunikat. niestety w chwili obecnej > efekt jest taki, że przy dłuższym działaniu, opóźnienia w wysyłaniu > komunikatów robią się niedopuszczalnie za duże... Szczerze mówiąc nie rozumiem :> |
|
#3
|
|
|
|
|
Łukasz Nowicki napisał(a):
> bo tak kombinowałem, czy warunek nie zrobić obiektem jakiejś klasy, w > której odpowiednio będę coś ustawiał... > > pewnie zapytacie po co mi takie kombinacje, skoro można zrobić po > prostu jednego if'a, chodzi głównie o optymalizację, mam aplikację > która będzie wywoływać if'a ok 100 razy/sek. w kilkunastu wątkach i po > każdym wywołaniu musi wysłać komunikat. hmm i takie cos mialoby byc szybsze od zwyklego operatora == ? > niestety w chwili obecnej > efekt jest taki, że przy dłuższym działaniu, opóźnienia w wysyłaniu > komunikatów robią się niedopuszczalnie za duże... moze to kwestia systemu we/wy a nie przetwarzania ifow? |
|
#4
|
|
|
|
|
On Wed, 28 Feb 2007 06:06:26 -0800, Lukasz Nowicki
wrote: [..] > jednego if'a, chodzi glównie o optymalizacje, mam aplikacje która bedzie > wywolywac if'a ok 100 razy/sek. w kilkunastu wątkach i po kazdym > wywolaniu musi wyslac komunikat. niestety w chwili obecnej efekt jest > taki, ze przy dluzszym dzialaniu, opóLnienia w wysylaniu komunikatów > robią sie niedopuszczalnie za duze... > > od razu dziekuje za wszystkie wskazówki i rady > > pozdrawiam > LN public interface Condition { boolean check(); } public class YourClass { public void checkCondition(Condition c) { if(c.check()) { //... } } } public class SecondClass { public void doSomething(YourClass yc) { yc.checkCondition(new Condition() { public boolean check() { return i == 0; } }); } private int i = 0; } Nie testowalem, ale powinno dzialac (moglem coś pomieszac z anonimowymi klasami). Pozdrawiam |
|
#5
|
|
|
|
|
>> czy można coś takiego zrobić ??
> > Nie, użyj lispa :> > >> pewnie zapytacie po co mi takie kombinacje, skoro można zrobić po >> prostu jednego if'a, chodzi głównie o optymalizację, mam aplikację >> która będzie wywoływać if'a ok 100 razy/sek. w kilkunastu wątkach i po >> każdym wywołaniu musi wysłać komunikat. niestety w chwili obecnej >> efekt jest taki, że przy dłuższym działaniu, opóźnienia w wysyłaniu >> komunikatów robią się niedopuszczalnie za duże... > > Szczerze mówiąc nie rozumiem :> To chyba jakieś zboczenie zawodowe. :) Swego czasu (jeśli mnie pamięć nie myli) Pan Łukasz był czynnym grupowiczem pl.como.lang.pascal, gdzię wyróżniał się głównie wiedzą z asemblera i optymalizacji. I tak już widzać zostało. :) Ps. Asembler i Java to dosyć kontrowersyjne zestawienie. ;) |
|
#6
|
|
|
|
|
On 2/28/2007 3:06 PM, Łukasz Nowicki wrote:
> prostu jednego if'a, chodzi głównie o optymalizację, mam aplikację > która będzie wywoływać if'a ok 100 razy/sek. w kilkunastu wątkach i po zadaj sobie pytanie czy dla wszystkich tych wywolan warunek ktory sprawdzasz bedzie taki sam. jezeli tak to if powinien byc poza petla. jezeli nie to nie wazne co zrobisz warunek musisz sprawdzic, niezaleznie czy wynik przypiszesz do zmiennej czy nie. |
|
#7
|
|
|
|
|
> zadaj sobie pytanie czy dla wszystkich tych wywolan warunek
> ktory sprawdzasz bedzie taki sam. jezeli tak to if powinien > byc poza petla. jezeli nie to nie wazne co zrobisz warunek > musisz sprawdzic, niezaleznie czy wynik przypiszesz do > zmiennej czy nie. właśnie w tym problem, że za każdym razem if będzie porównywał co innego. polega to na tym, że każdy wątek ma ustalone z góry jakieś filtry dotyczące ok 9 różnych rzeczy i teraz aplikacja otrzymuje odpowiednie zdarzenie i sprawdza czy pasuje ono do danego filtra i w zależność od rezultatu, przesyła to zdarzenie dalej lub nie... tyle,że może być taka sytuacja, że niektóre z przesłanych elementów danego zdarzenia nie muszą być filtrowane, ponieważ nie zostały ustawione dla nich filtry - w takiej sytuacji pomyślałem, że zamiast sprawdzać wszystkie 9 elementów sprawdzać tylko te, które mają ustawione filtry, przez co aplikacja działała by szybciej ?? wiem, trochę to wszystko zakręcone, ale i tak dziękuje ślicznie za wszystkie odpowiedzi - nic, będę kombinował dalej pozdrawiam ŁN |
|
#8
|
|
|
|
|
> moze to kwestia systemu we/wy a nie przetwarzania ifow?
no właśnie też tak się nad tym zastanawiam, może to nie do końca if'y zwalniają mi aplikację tylko np. samo gniazdo UDP nie nadąża ich później wysyłać... ja wiem, że to może wyglądać na "sztuczną" optymalizację, ale niestety cel aplikacji polega na tym, aby to wszystko działało jak najszybciej... pozdrawiam ŁN |
|
#9
|
|
|
|
|
czw, 01 mar 2007 o 08:47 GMT, Łukasz Nowicki napisał(a):
> no właśnie też tak się nad tym zastanawiam, może to nie do końca if'y > zwalniają mi aplikację tylko np. samo gniazdo UDP nie nadąża ich > później wysyłać... no i tu robisz wlasnie podstawowy blad, optymalizowac powinienes cos dopiero wtedy gdy tego wymaga, a teraz sam nie wiesz czy to tego wymaga... do roboty z profilerem... Pozdrawiam Brzezi |
|
#10
|
|
|
|
|
> no i tu robisz wlasnie podstawowy blad, optymalizowac powinienes cos dopiero wtedy
> gdy tego wymaga, a teraz sam nie wiesz czy to tego wymaga... masz rację... ale to dlatego,że od niedawna programuję zawodowo i brak mi jeszcze Waszego doświadczenia :) pośpieszyłem się trochę z tym postem odnośnie if'ów, bo problemleżał w czym innym, na szczęście już wszystko naprawiłem i śmiga teraz jak marzenie, hehe ;) jeszcze raz dziękuje wszystkim za rady, na pewno wyciągnę z nich wnioski na przyszłość pozdrawiam ŁN |
|
#11
|
|
|
|
|
Użytkownik "Łukasz Nowicki" <pieckowo> napisał w wiadomości
news:6800 witam! już w temacie wstępnie naświetliłem mój problem. właśnie czy java daje taką możliwość, aby w jakiejś zmiennej przechowywany był warunek uzależniony od innych zmiennych. może nie do końca jasno się wyrażam dlatego napiszę przykład : public void sprawdzWarunek(warunek) { if(warunek) { |
|
#12
|
|
|
|
|
pl.comp.lang.java.getSenderByName("*as*").quote();
> a nie mozesz czegos w stylu > > boolean warunek = zm1 == 1 && zm2 == 2 ... ? I mówisz że to będzie można setować? |
|
#13
|
|
|
|
|
Użytkownik "Mateusz Ludwin" <nie> napisał w wiadomości
news:56c1 > pl.comp.lang.java.getSenderByName("*as*").quote(); > >> a nie mozesz czegos w stylu >> >> boolean warunek = zm1 == 1 && zm2 == 2 ... ? > > I mówisz że to będzie można setować? > -- > Omniscient, omnipotent, omnipresent, without judgment > > Mateusz Ludwin matl [at] megapolis [dot] pl A czy to nie moze byc tak? void setWarunek(boolean war) { this.warunek = war; } costam.setWarunek(zm1 == 1 && zm2 == 2 ...); pozdrawiam A. |
|
|
| Podobne wątki | |
| Warunek WHERE Witam, posiadam warunek where budowany z formularza Filtr na którym włączam poszczególne opcje filtrowania: Where tbl_zadania.login_odp = , lub tbl_zadania.nr_dzialu =... |
|
| Warunek w C Witam wszystkich Kto mi powie dlaczego taka konstrukcja sie nie kompiluje ? (n) ? return 1 : return 0; Pozdrawiam |
|
| Facelets, czy mozna ustawic warunek wyswietlania? Witam, Wyciagam sobie komponent poprzez <ui:include src="/xxx/mojKomponent.xhtml"/> ale musze go wyciagac TYLKO wtedy gdy moja flaga np. Mama == true jak moge owarunkowac... |
|
| warunek if czy moglby mi ktos powiedziec czemu to nie dziala: if ((substr($db->typ,0,10) == "MIESZKANIE") and (substr($db->typ,0,3) == "DOM") and (substr($db->typ,0,7) ==... |
|
| warunek if jak zapisac warunek $result = mysql_query($query) ktory sprawdza czy zapytanie to prawda czy falsz ? if($result>0) " print " nie dziala"; mag |
|
|
Czasy w strefie GMT. Teraz jest 14:46. | Privacy Policy
|