---
title: "Long snabbare än Integer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/68272-long-snabbare-än-integer"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Vide"
published: "2003-02-14T13:17:11.000Z"
updated: "2003-02-15T12:38:13.000Z"
replies: 16
views: 438
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/68272-long-snabbare-än-integer"
---

# Long snabbare än Integer

## #1 — Vide, 2003-02-14T13:17Z

Har gjort lite tester och kommit fram till att datatypen Long är snabbare i beräkningarna än Integer(16) (VBS).

Anledningen är antagligen att systemet (Processorn) bygger på 32 bitar. Integer(16) är segare p.g.a att systemet måste skala ned ifrån 32, d.v.s, det sker en konvertering.

Dock är Cint snabbare på att konvertera gentemot Clng.

```
<%
intTimer = Timer()
int1 = cint( "0" )
for i = 0 to 500000
	int1 = ( 1 + int1 ) mod 32768
next
response.write "int: " & Timer() - intTimer & "<br><br>"

intTimer2 = Timer()
lng1 = clng( "0" )
for i = 0 to 500000
	lng1 = ( 1 + lng1 ) mod 32768
next
response.write "lng: " & Timer() - intTimer2 & "<br><br>"
%>
```

Reflektioner? :)

Permalänk: https://www.webforum.nu/p/68272

## #2 — OveRRidE, 2003-02-14T14:42Z

Jag har inte tid att testa, men responstider, på ett ungefär?

Permalänk: https://www.webforum.nu/p/951039

## #3 — Engine^, 2003-02-14T15:02Z

Intressant...

Blir det samma resultat om du använder timeGetTime() istället för Timer() också?

Permalänk: https://www.webforum.nu/p/951069

## #4 — Vide, 2003-02-14T15:06Z

> **OveRRidE skrev:**
>
> Jag har inte tid att testa, men responstider, på ett ungefär?

Skillnaden är inte väldigt märkbar, men intressant (Lokal maskin):

> **Browser skrev:**
>
> int: 8.003906
> 
> lng: 7.777344

Permalänk: https://www.webforum.nu/p/951075

## #5 — Vide, 2003-02-14T15:07Z

> **Engine^ skrev:**
>
> Intressant...
> 
> Blir det samma resultat om du använder timeGetTime() istället för Timer() också?

Har jag inte testat, men har svårt att tänka mig någon skillnad vad gäller beräkningarna.

Permalänk: https://www.webforum.nu/p/951077

## #6 — Engine^, 2003-02-14T15:10Z

timeGetTime() är såvitt jag vet exaktare än Timer()... bara jag som blev nyfiken :)

Permalänk: https://www.webforum.nu/p/951082

## #7 — niko, 2003-02-14T15:39Z

Jag får detta resultat:

int: 5.140625
lng: 5.046875

Men nu kommer det intressanta! Om jag byter plats på looparna så får jag tvärtom:

lng: 5.148438
int: 5.046875

Slutsats?

Permalänk: https://www.webforum.nu/p/951131

## #8 — Vide, 2003-02-14T15:59Z

Systemfel (som ASP bygger på ;))!
Vid körning av "mod 32768" övergår en int till lng eftersom talet är overflow.

Testade detta istället:

```
<%
intTimer2 = Timer()
lng1 = clng( "0" )
for i = 0 to 2000000
	lng1 = ( 1 + lng1 ) mod 30000
next
response.write "lng: " & Timer() - intTimer2 & "<br><br>"

intTimer = Timer()
int1 = cint( "0" )
for i = 0 to 2000000
	int1 = ( 1 + int1 ) mod 30000
next
response.write "int: " & Timer() - intTimer & "<br><br>"
%>
```

Ger resultatet:

> **Browser skrev:**
>
> lng: 14.19922
> 
> int: 10.18359

Spelar ingen roll om man byter plats på looparna.

Permalänk: https://www.webforum.nu/p/951144

## #9 — niko, 2003-02-14T16:17Z

Med din nya kod fick *jag* så här:

Original:
lng: 22.67969
int: 18.10938

Bytte plats:
int: 17.58594
lng: 22.5

Slutsats? Hypotesen kanske bör provas i en mängd olika operativ, maskinkonfigurationer, dll-versioner innan man drar nån slutsats?
Man kanske också bör prova med mängder olika sorts kod? 

Och ja, jag lovar. Jag har en 32-bitars processor!

Permalänk: https://www.webforum.nu/p/951159

## #10 — crisse6, 2003-02-15T00:10Z

tror dig inte niko :P

Permalänk: https://www.webforum.nu/p/951413

## #11 — niko, 2003-02-15T01:50Z

> **crisse6 skrev:**
>
> tror dig inte niko

Nähä?

Synd för dig då att jag har [bildbevis](http://member.webforum.nu/3773/vadsadunu.gif).  :p 

(Man kan inte köra IE6 på en 286:a.)

Permalänk: https://www.webforum.nu/p/951435

## #12 — crisse6, 2003-02-15T02:13Z

Just kiddin dude ;)

Permalänk: https://www.webforum.nu/p/951450

## #13 — OveRRidE, 2003-02-15T11:55Z

Snyggt filnamn, där du Niko. ;)

Permalänk: https://www.webforum.nu/p/951598

## #14 — @nders, 2003-02-15T11:59Z

:e

Jag har visserligen hört att long skall vara bättre att använda i VB än integer, av nämnda anledningar, men en sak jag har lärt mig är att saker och ting skiljer ganska väsentligt mellan VB och VBScript.

(I .NET är dock integer en 32-bitars datatyp, och long har blivit 64 bitar, hur blir det då? ;) )

mvh

Permalänk: https://www.webforum.nu/p/951601

## #15 — spango, 2003-02-15T12:09Z

> **niko skrev:**
>
> Men nu kommer det intressanta! Om jag byter plats på looparna så får jag tvärtom:
> \[snip!\]
> Slutsats?

Process-schemaläggaren effektiviserar schemat när den upptäcker att din ASP-sida vill göra en massa dumberäkningar.

Och ja, det här är implementationsspecifikt. En 16-bitars datatyp kan mycket väl ta upp 32 bitar för att processorn ska kunna bearbeta den effektivare. (Om det faktiskt är så i någon {VB,VBScript}implementation vet jag förstås inte :) )

Permalänk: https://www.webforum.nu/p/951603

## #16 — niko, 2003-02-15T12:31Z

> **spango skrev:**
>
> Process-schemaläggaren effektiviserar schemat när den upptäcker att din ASP-sida vill göra en massa dumberäkningar.

Men i så fall borde den ju upptäcka det redan tidigt i första loopen? Och ordningsföljden skulle spela mindre roll.

Dessutom tror jag inte att schemaläggaren (Windows dispatcher) har några synpunkter på vad enskilda trådar håller på med, eller ens försöker lägga sig i och optimera. Windows funkar inte riktigt så ..

> **spango skrev:**
>
> Om det faktiskt är så i någon {VB,VBScript}implementation vet jag förstås inte

Nej, det funkar inte alls så. I VBScript finns inga 16-bitars integer eller 32-bitars long. Det finns bara en datatyp: Variant. En variant är *alltid* 16 bytes(!).

Alla VBScriptfunktioner returnerar Varianter, även *CLng* och *CInt*.

De två första bytesen i en Variant talar om hur datan i de övriga 14 ska tolkas (exakt hur det funkar vet bara gud och MS). Därför blir resonemang kring snabbheten hos 16- och 32-bitarsoperationer i VBScript lite odefinierade och konstiga.

Permalänk: https://www.webforum.nu/p/951616

## #17 — niko, 2003-02-15T12:38Z

> **OveRRidE skrev:**
>
> Snyggt filnamn, där du Niko.

Tack! :)

Permalänk: https://www.webforum.nu/p/951618

---

Tråden på webben: https://www.webforum.nu/amne/asp/68272-long-snabbare-än-integer
