hilpers


  hilpers > microsoft.* > microsoft.dotnet.vb > 02/2008

 #1  
09.02.2008, 17:13
marcodb
da una stringa chi è più veloce secondo voi?

ciao Grazie.

mb
 #2  
09.02.2008, 20:00
Matteo Migliore
> da una stringa chi è più veloce secondo voi?

Beh, basta provare no? :-)

Nota: CInt esiste per retro-compatibilità e viene tradotto dal compilatore
con Conversion.ToInteger (una classe del compilatore di VB).

Conversions.ToInteger è circa il doppio più veloce rispetto a Integer.Parse.
--------------------------------------------------------------
Dim numS As String = "123"
Dim num As Integer

Dim stopWatch As New Stopwatch()

Dim time1 As Double
Dim time2 As Double
Dim times As Integer = 100000

stopWatch.Start()
For i As Integer = 0 To times
num = CInt(numS)
Next
stopWatch.Stop()

time1 = stopWatch.ElapsedTicks / times

stopWatch.Start()
For i As Integer = 0 To times
num = Integer.Parse(numS)
Next
stopWatch.Stop()
time2 = stopWatch.ElapsedTicks / times

Dim winner As String = String.Empty
If (time1 < time2) Then
winner = "CInt"
ElseIf (time1 > time2) Then
winner = "Integer.Parse"
Else
winner = "Pair"
End If

Console.WriteLine(" CInt: {0}", time1)
Console.WriteLine("Integer.Parse: {0}", time2)
Console.WriteLine(" Winner is: {0}", winner)
--------------------------------------------------------------

> ciao Grazie.


Prego! ;-)
 #3  
10.02.2008, 07:56
Corrado Cavalli [MVP]
> Nota: CInt esiste per retro-compatibilità...
Falso, fa parte del linguaggio VB e continuerà ad esserlo.

Per il resto, questo post di Paul Vick e MSDN chiariscono ogni dubbio:
http://www.panopticoncentral.net/arc...5/31/1100.aspx
http://msdn2.microsoft.com/en-us/lib...zy(VS.80).aspx

Per quanto riguarda la frase "As a rule, you should use the Visual Basic
type conversion functions in preference to the .NET Framework methods such
as ToString(), either on the Convert class or on an individual type
structure or class." io la penso in maniera diversa preferendo una generale
"armonia" verso il framework rispetto a piccoli miglioramenti in termini di
performance.
 #4  
10.02.2008, 09:13
Matteo Migliore
>> Nota: CInt esiste per retro-compatibilità...
> Falso, fa parte del linguaggio VB e continuerà ad esserlo.


Ok, ma queste "keyword" sono un'anomalia di VB.NET
perchè vengono poi tradotte in chiamate a metodi
di classi del Framework o delle library di VB.

Probabilmente se VB.NET non venisse da VB
(è un se enorme :-D) non esisterebbero.

> Per il resto, questo post di Paul Vick e MSDN chiariscono ogni dubbio:
> [..]
> [..]
>
> Per quanto riguarda la frase "As a rule, you should use the Visual Basic
> type conversion functions in preference to the .NET Framework methods such
> as ToString(), either on the Convert class or on an individual type
> structure or class." io la penso in maniera diversa preferendo una
> generale "armonia" verso il framework rispetto a piccoli miglioramenti in
> termini di performance.


Condivido :-).
 #5  
10.02.2008, 09:26
Raffaele Rialdi [MVP]
> Ok, ma queste "keyword" sono un'anomalia di VB.NET
> perchè vengono poi tradotte in chiamate a metodi
> di classi del Framework o delle library di VB.


Se guardi con reflector non è vero.
Non sono semplici wrapper e anche il tipo di argomenti è differente.
La CInt per esempio chiama la double.parse e fa altre cose

> Probabilmente se VB.NET non venisse da VB
> (è un se enorme :-D) non esisterebbero.


Secondo me invece si. Non per niente il namespace my è nato con vb.net
 #6  
10.02.2008, 09:38
Lorenzo Barbieri [MVP]
Matteo Migliore was thinking very hard :
> Probabilmente se VB.NET non venisse da VB
> (è un se enorme :-D) non esisterebbero.


A Milano si dice "Se mio nonno avesse le ruote sarebbe un tram..."

Se VB.NET non avesse il my, il supporto a COM e a XML 100.000 volte più
semplice rispetto a C# e tante altre cose, non sarebbe VB.NET.
Tutto il resto sono "amiche di pippo"... :-D
 #7  
10.02.2008, 09:45
Mauro Servienti [MVP]
Ciao Lorenzo,

You wrote :
> Tutto il resto sono "amiche di pippo"... :-D


ROTFL, troppo un grande!
 #8  
10.02.2008, 12:36
Matteo Migliore
> A Milano si dice "Se mio nonno avesse le ruote sarebbe un tram..."

Perchè ha già l'obliteratrice, è arancione etc...? :-D

> Se VB.NET non avesse il my, il supporto a COM e a XML 100.000 volte più
> semplice rispetto a C# e tante altre cose, non sarebbe VB.NET.


E sì che cerco minuziosamente di evitare
risposte che generino sequele di post,
ma non ci riesco :-D.

> Tutto il resto sono "amiche di pippo"... :-D


I miei amici non si chiamano come me,
perchè quelli di pippo sì? :-D
 #9  
10.02.2008, 12:42
Matteo Migliore
>> Ok, ma queste "keyword" sono un'anomalia di VB.NET
>> perchè vengono poi tradotte in chiamate a metodi
>> di classi del Framework o delle library di VB.

>
> Se guardi con reflector non è vero.
> Non sono semplici wrapper e anche il tipo di argomenti è differente.
> La CInt per esempio chiama la double.parse e fa altre cose


Sì, ho guardato con Reflector, ma se l'argometo
è una stringa sì può chiamare direttamemte
un metodo di conversione appropriato.

*Personalmente* quello che non mi piace
è la difformità di VB rispetto a C#,
non la sintassi ovviamente, sennò uno
dei due linguaggi andrebbe eliminato.

Poi, come già detto molte volte, ognuno
usi il linguaggio che più lo aggrada.

>> Probabilmente se VB.NET non venisse da VB
>> (è un se enorme :-D) non esisterebbero.

>
> Secondo me invece si. Non per niente il namespace my è nato con vb.net


Mah, servirebbe la sfera di cristallo, che permetta
di mutare i flussi temporali anche passati, quindi
una versione 2.0 o 3.0 della sfera di cristallo :-).
 #10  
10.02.2008, 13:17
Raffaele Rialdi [MVP]
> Sì, ho guardato con Reflector, ma se l'argometo
> è una stringa sì può chiamare direttamemte
> un metodo di conversione appropriato.


Quello che scrivevo è che non sono semplici wrapper ma fanno altre cose.

> *Personalmente* quello che non mi piace
> è la difformità di VB rispetto a C#,
> non la sintassi ovviamente, sennò uno
> dei due linguaggi andrebbe eliminato.


Questo è un discorso che risale ad almeno dieci anni fa.
L'utente tipo di vb.net si chiama "Mort" mentre quello di C# si chiama
"Elvis".
http://www.nikhilk.net/Personas.aspx
Mort è l'utente opportunistico che vuole la soluzione veloce e in questo
senso vb.net è perfetto.
Se ci fossero meno differenze tra i linguaggi probabilmente non avrebbe
senso mantenerne due tra vb e C#.


> Poi, come già detto molte volte, ognuno
> usi il linguaggio che più lo aggrada.


Beh questo è chiaro, mica ti obbligano :)

>> Secondo me invece si. Non per niente il namespace my è nato con
>> vb.net

>
> Mah, servirebbe la sfera di cristallo, che permetta
> di mutare i flussi temporali anche passati, quindi
> una versione 2.0 o 3.0 della sfera di cristallo :-).


Il namespace my e quelle feature sono volute in vb, proprio perché, secondo
MS, l'utente tipo di VB è Mortimer (così suona meglio :) ).
 #11  
10.02.2008, 13:28
Lorenzo Barbieri [MVP]
Matteo Migliore pretended :
> I miei amici non si chiamano come me,
> perchè quelli di pippo sì? :-D


Io non parlo dei pippi :-D
Discussioni simili
CInt per eccesso

Buongiorno a tutti, ho un problema con il mio programma, sto cercando una funzione di conversione che mi faccia la conversione in intero per eccesso, ovvero per esempio con...

Cint di sic. risolta : )

Il mio amoruccio, mica faidateista di professione e nemmeno per hobby, è riuscito a disincastrare la cintura di sicurezza spingendo verso l'esterno il portello...

Cint di sicur.incastrata in portiera

M'è successo un guaio! Non so come, ma questa mattina chiudendo la portiera posteriore scorrevole della kangoo, è rimasta incastrata la cintura di sicurezza del sedile...

Parse error: parse error, unexpected T_STRING in ... on line 7

Sarà la calura estiva... ma dove caspita è questo parse error? Se commento le linee dalla 4° alla 7° tutto va bene. <? session_start(); // Inzializza le...

CInt e Type mismatch? O_o

Ciao Ragazzi, Guardate qui: CardMonth = CInt( Request.Form( "MeseScadenza" ) ) Mi dice: Type Mismatch : CInt.


Tutti gli orari sono GMT. Attualmente sono le 09:47. | Privacy Policy