Thread View: alt.pl.comp.lang.csharp
17 messages
17 total messages
Started by prorok
Sat, 25 Dec 2010 13:43
Wydajność porównywania
Author: prorok
Date: Sat, 25 Dec 2010 13:43
Date: Sat, 25 Dec 2010 13:43
4 lines
1107 bytes
1107 bytes
Gdy porównujemy dwa obiekty wywoływana jest chyba metoda Equals. Czy jest również wywoływana dla typów wartościowych? Wtedy porównując "if (n==5)" musi być wywołana metoda co źle wpływa na wydajność.
Re: Wydajność porównywania
Author: Wiktor S.
Date: Sun, 26 Dec 2010 20:15
Date: Sun, 26 Dec 2010 20:15
9 lines
1242 bytes
1242 bytes
> Gdy porównujemy dwa obiekty wywoływana jest chyba metoda Equals. Czy > jest również wywoływana dla typów wartościowych? Wtedy porównując > "if (n==5)" > musi być wywołana metoda co źle wpływa na wydajność. Bez przesady, kompilator nie jest aż tak głupi... -- Azarien
Re: Wydajność porównywania
Author: Wiktor S.
Date: Sun, 26 Dec 2010 20:16
Date: Sun, 26 Dec 2010 20:16
13 lines
1319 bytes
1319 bytes
> Gdy porównujemy dwa obiekty wywoływana jest chyba metoda Equals. Czy > jest również wywoływana dla typów wartościowych? Wtedy porównując > "if (n==5)" > musi być wywołana metoda co źle wpływa na wydajność. Bez przesady, kompilator nie jest aż tak głupi... co by ta metoda zresztą miała zawierać, zagnieżdżone return x==y? -- Azarien
Re: Wydajność porównywania
Author: Wiktor S.
Date: Sun, 26 Dec 2010 20:20
Date: Sun, 26 Dec 2010 20:20
9 lines
1254 bytes
1254 bytes
typy wbudowane (int, float itp.) są „magiczne”. int rzeczywiście jest obiektem typu System.Int32, posiada metody, np. ToString() - ale, w przeciwieństwie do Javy, na poziomie kodu wykonywalnego to po prostu czterobajtowa liczba bez żadnych cudów. -- Azarien
Re: Wydajnoć porównywania
Author: Maciej Pilichowski
Date: Mon, 27 Dec 2010 06:01
Date: Mon, 27 Dec 2010 06:01
19 lines
1586 bytes
1586 bytes
On Sat, 25 Dec 2010 14:43:07 +0100, prorok <prorok@to.nie.adres> wrote: >Gdy porównujemy dwa obiekty wywoływana jest chyba metoda Equals. Nie jest. >Czy >jest również wywoływana dla typów wartościowych? Wtedy porównując >"if (n==5)" >musi być wywołana metoda co źle wpływa na wydajność. Znaczy sie wywolanie metody zle wplywa na wydajnosc, tiaa... A co dobrze wplyneloby na wydajnosc? -- Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy. http://www.garaz.pol.pl/
Re: Wydajnoć porównywania
Author: 3P
Date: Mon, 27 Dec 2010 10:58
Date: Mon, 27 Dec 2010 10:58
24 lines
1671 bytes
1671 bytes
Dnia 27-12-2010 o 07:01:36 Maciej Pilichowski <Pilichowski.MaciejSkasujTo@gmail.com> napisał(a): > On Sat, 25 Dec 2010 14:43:07 +0100, prorok <prorok@to.nie.adres> > wrote: > >> Gdy porównujemy dwa obiekty wywoływana jest chyba metoda Equals. > > Nie jest. To zależy jakie obiekty. Jeżeli przez równość obiektów rozumiemy posiadanie tych samych wartości to zazwyczaj jest. string a = "aaa"; string b = "bbb"; if (a == b) // wywołanie Equals. > >> Czy >> jest również wywoływana dla typów wartościowych? Wtedy porównując >> "if (n==5)" >> musi być wywołana metoda co źle wpływa na wydajność. > > Znaczy sie wywolanie metody zle wplywa na wydajnosc, tiaa... A co > dobrze wplyneloby na wydajnosc? Nie wywołanie metody.
Re: Wydajno?ć porównywania
Author: prorok
Date: Mon, 27 Dec 2010 13:27
Date: Mon, 27 Dec 2010 13:27
13 lines
1601 bytes
1601 bytes
W dniu 2010-12-27 11:58, 3P pisze: > To zależy jakie obiekty. Jeżeli przez równość obiektów rozumiemy > posiadanie tych samych wartości to zazwyczaj jest. > string a = "aaa"; > string b = "bbb"; > > if (a == b) // wywołanie Equals. Czyli if (a == b) to to samo co a.Equals(b) Przy okazji mam pilne pytanie: czy "abc" będzie uznane za równe "ABC" ? Sprawdziłem że ciąg musi być identyczny "abc" i "abc". A co gdy chcę porównywać nie patrząc na wielkość liter? Czy jest jakaś inna metoda, czy tez w stringu przestawia się jakiś tryb porównywania?
Re: Wydajno?ć porównywania
Author: 3P
Date: Mon, 27 Dec 2010 18:14
Date: Mon, 27 Dec 2010 18:14
28 lines
2017 bytes
2017 bytes
Dnia 27-12-2010 o 14:27:20 prorok <prorok@to.nie.adres> napisał(a): > W dniu 2010-12-27 11:58, 3P pisze: >> To zależy jakie obiekty. Jeżeli przez równość obiektów rozumiemy >> posiadanie tych samych wartości to zazwyczaj jest. >> string a = "aaa"; >> string b = "bbb"; >> >> if (a == b) // wywołanie Equals. > > Czyli if (a == b) to to samo co a.Equals(b) W przypadku stringów to będzie działać tak samo. Ale jak piszesz swoje klasy to musisz ovveride'ować Equals i możesz także to samo zrobić z operator= i zawołać z niego Equals. > Przy okazji mam pilne pytanie: czy "abc" będzie uznane za równe "ABC" ? > Sprawdziłem że ciąg musi być identyczny "abc" i "abc". A co gdy chcę > porównywać nie patrząc na wielkość liter? Czy jest jakaś inna metoda, > czy tez w stringu przestawia się jakiś tryb porównywania? 1) lewy.ToLower() == prawy.ToLower() (ew.ToUpper) 2) Jakieś string.Compare przyjmujące paremetr StringComparison (czy jakoś tak) z wartością IgnoreCase (intellisense ci pomoże)
Re: Wydajnoć porównywania
Author: Maciej Pilichowski
Date: Tue, 28 Dec 2010 06:02
Date: Tue, 28 Dec 2010 06:02
23 lines
1832 bytes
1832 bytes
On Mon, 27 Dec 2010 11:58:27 +0100, 3P <nospam@serwer.pl> wrote: >To zależy jakie obiekty. Jeżeli przez równo¶ć obiektów rozumiemy >posiadanie tych samych warto¶ci to zazwyczaj jest. >string a = "aaa"; >string b = "bbb"; > >if (a == b) // wywołanie Equals. String to specyficzna klasa, jezeli ktos chce miec porownanie wartosci to musi uzyc explicite Equals, inaczej porownaja sie same wskazniki. >> Znaczy sie wywolanie metody zle wplywa na wydajnosc, tiaa... A co >> dobrze wplyneloby na wydajnosc? >Nie wywołanie metody. W sumie racja, brak programu najlepiej wplywa na czas wykonania ;-) milego dnia, hej -- Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy. http://www.garaz.pol.pl/
Re: Wydajno?ć porównywania
Author: Maciej Pilichowski
Date: Tue, 28 Dec 2010 06:07
Date: Tue, 28 Dec 2010 06:07
18 lines
1874 bytes
1874 bytes
On Mon, 27 Dec 2010 19:14:29 +0100, 3P <nospam@serwer.pl> wrote: >> Czyli if (a == b) to to samo co a.Equals(b) >W przypadku stringów to będzie działać tak samo. >Ale jak piszesz swoje klasy to musisz ovveride'ować Equals i możesz także >to samo zrobić z operator= >i zawołać z niego Equals. A pozniej koledzy z pracy Cie powiesza! To, ze mozna pisac zle nie oznacza, ze nalezy to robic. Jezeli chcesz miec porownanie wartosci to po prostu wywolaj metode, ktora to robi, Equals. Nie zmieniaj natomiast znaczen operatorow. milego dnia, hej -- Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy. http://www.garaz.pol.pl/
Re: Wydajnoć porównywania
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 28 Dec 2010 07:49
Date: Tue, 28 Dec 2010 07:49
21 lines
1617 bytes
1617 bytes
On Tue, 28 Dec 2010 07:02:51 +0100, Maciej Pilichowski wrote: > On Mon, 27 Dec 2010 11:58:27 +0100, 3P <nospam@serwer.pl> wrote: > >>To zależy jakie obiekty. Jeżeli przez równo¶ć obiektów rozumiemy >>posiadanie tych samych warto¶ci to zazwyczaj jest. >>string a = "aaa"; >>string b = "bbb"; >> >>if (a == b) // wywołanie Equals. > > String to specyficzna klasa, jezeli ktos chce miec porownanie wartosci > to musi uzyc explicite Equals, inaczej porownaja sie same wskazniki. Kpisz? Czy pomyliła się grupa z pl.comp.lang.java? p.s. Pominę użycie sformułowania "wskaźniki" chwilą ciszy. -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.eu/
Re: Wydajno?ć porównywania
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 28 Dec 2010 07:53
Date: Tue, 28 Dec 2010 07:53
19 lines
1634 bytes
1634 bytes
On Mon, 27 Dec 2010 19:14:29 +0100, 3P wrote: >> Przy okazji mam pilne pytanie: czy "abc" będzie uznane za równe "ABC" ? >> Sprawdziłem że ciąg musi być identyczny "abc" i "abc". A co gdy chcę >> porównywać nie patrząc na wielkość liter? Czy jest jakaś inna metoda, >> czy tez w stringu przestawia się jakiś tryb porównywania? > > 1) > lewy.ToLower() == prawy.ToLower() (ew.ToUpper) > > 2) > Jakieś string.Compare przyjmujące paremetr StringComparison (czy jakoś > tak) z wartością > IgnoreCase (intellisense ci pomoże) public bool Equals(string value, StringComparison comparisonType); -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.eu/
Re: Wydajno?ć porównywania
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 28 Dec 2010 07:58
Date: Tue, 28 Dec 2010 07:58
23 lines
1814 bytes
1814 bytes
On Tue, 28 Dec 2010 07:07:08 +0100, Maciej Pilichowski wrote: > A pozniej koledzy z pracy Cie powiesza! To, ze mozna pisac zle nie > oznacza, ze nalezy to robic. http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx "Overriding operator == in non-immutable types is not recommended." Jakieś źródła do tego co piszesz? Czy za ref'a bierzesz siebie i wieszających kolegów z pracy ;-)? > Jezeli chcesz miec porownanie wartosci to po prostu wywolaj metode, > ktora to robi, Equals. Nie zmieniaj natomiast znaczen operatorow. Jeżeli naturalnym jest porównanie by-value przez operator == to nie widze powodu żeby tego ne robić. A jeżeli ktoś chce explicit porównanie referencji["wskaźników" ;p], to jest object.ReferenceEquals(). -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.eu/
Re: Wydajno?ć porównywania
Author: Maciej Pilichowski
Date: Tue, 28 Dec 2010 08:05
Date: Tue, 28 Dec 2010 08:05
32 lines
2384 bytes
2384 bytes
On Tue, 28 Dec 2010 08:58:57 +0100, Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wrote: >On Tue, 28 Dec 2010 07:07:08 +0100, Maciej Pilichowski wrote: >> A pozniej koledzy z pracy Cie powiesza! To, ze mozna pisac zle nie >> oznacza, ze nalezy to robic. > >http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx > >"Overriding operator == in non-immutable types is not recommended." > >Jakieś źródła do tego co piszesz? Czy za ref'a bierzesz siebie >i wieszających kolegów z pracy ;-)? Przeciez wlasnie to zrodlo zacytowales. >> Jezeli chcesz miec porownanie wartosci to po prostu wywolaj metode, >> ktora to robi, Equals. Nie zmieniaj natomiast znaczen operatorow. > >Jeżeli naturalnym jest porównanie by-value przez operator == >to nie widze powodu żeby tego ne robić. A jeżeli ktoś chce >explicit porównanie referencji["wskaźników" ;p], to jest >object.ReferenceEquals(). Sluchaj, w swoim kodzie rob co chcesz, ja tylko mowie jak sie powinno pisac i kod, ktory spotyka sie w zyciu jest wlasnie tak napisany jak opisalem wyzej. milego dnia, hej -- Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy. http://www.garaz.pol.pl/
Re: Wydajno?ć porównywania
Author: Maciej Pilichowski
Date: Tue, 28 Dec 2010 08:07
Date: Tue, 28 Dec 2010 08:07
36 lines
2133 bytes
2133 bytes
On Tue, 28 Dec 2010 08:49:16 +0100, Łukasz 'Maly' Ostrowski
<maly@USUNnemo.pl> wrote:
>On Tue, 28 Dec 2010 07:02:51 +0100, Maciej Pilichowski wrote:
>
>> On Mon, 27 Dec 2010 11:58:27 +0100, 3P <nospam@serwer.pl> wrote:
>>
>>>To zależy jakie obiekty. Jeżeli przez równo¶ć obiektów rozumiemy
>>>posiadanie tych samych warto¶ci to zazwyczaj jest.
>>>string a = "aaa";
>>>string b = "bbb";
>>>
>>>if (a == b) // wywołanie Equals.
>>
>> String to specyficzna klasa, jezeli ktos chce miec porownanie wartosci
>> to musi uzyc explicite Equals, inaczej porownaja sie same wskazniki.
>
>Kpisz? Czy pomyliła się grupa z pl.comp.lang.java?
>
>p.s. Pominę użycie sformułowania "wskaźniki" chwilą ciszy.
Nie zemdlej tylko.
public class Foo
{
public int x;
}
...
Foo a,b;
...
if (a==b) // co sie tu stanie?
--
Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy.
http://www.garaz.pol.pl/
Re: Wydajno?ć porównywania
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 28 Dec 2010 08:08
Date: Tue, 28 Dec 2010 08:08
36 lines
2153 bytes
2153 bytes
On Tue, 28 Dec 2010 09:07:05 +0100, Maciej Pilichowski wrote:
> On Tue, 28 Dec 2010 08:49:16 +0100, Łukasz 'Maly' Ostrowski
> <maly@USUNnemo.pl> wrote:
>
>>On Tue, 28 Dec 2010 07:02:51 +0100, Maciej Pilichowski wrote:
>>
>>> On Mon, 27 Dec 2010 11:58:27 +0100, 3P <nospam@serwer.pl> wrote:
>>>
>>>>To zależy jakie obiekty. Jeżeli przez równo¶ć obiektów rozumiemy
>>>>posiadanie tych samych warto¶ci to zazwyczaj jest.
>>>>string a = "aaa";
>>>>string b = "bbb";
>>>>
>>>>if (a == b) // wywołanie Equals.
>>>
>>> String to specyficzna klasa, jezeli ktos chce miec porownanie wartosci
>>> to musi uzyc explicite Equals, inaczej porownaja sie same wskazniki.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>
>>Kpisz? Czy pomyliła się grupa z pl.comp.lang.java?
>>
>>p.s. Pominę użycie sformułowania "wskaźniki" chwilą ciszy.
>
> Nie zemdlej tylko.
>
> public class Foo
> {
> public int x;
> }
Nie zemdlej tylko, forma gramatyczna tego co napisałeś sugerowała
że piszesz o string, a nie o jakiejś klasie.
--
Pozdrawiam,
Łukasz 'Maly' Ostrowski. http://l3v.eu/
Re: Wydajno?ć porównywania
Author: Maciej Pilichowski
Date: Tue, 28 Dec 2010 08:12
Date: Tue, 28 Dec 2010 08:12
16 lines
1728 bytes
1728 bytes
On Tue, 28 Dec 2010 09:08:41 +0100, Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wrote: >Nie zemdlej tylko, forma gramatyczna tego co napisałeś sugerowała >że piszesz o string, a nie o jakiejś klasie. Caly czas rozmowa jest o porownywaniu, odnioslem sie krotko do stringa, iz jest on 'nietypowa" klasa (bo immutable). Ok, jak widac, nieporozumienie slowne ;-) milego dnia, hej -- Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy. http://www.garaz.pol.pl/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads