Why IE Is So Fast ... Sometimes
safrit writes "Finally the scoop on how IE "cheats" a little to up its performance! Do RFCs mean nothing anymore? What's next, Riots in the streets, dogs and cats living together, mass hysteria!
From the blog story: 'Internet Explorer on Windows always seems either to run impossibly fast (page requests are fulfilled almost before the mouse button has returned to its original unclicked position), or ridiculously slow...' Now read to see why..."
It would make things a little easier for them and us.
Just tired of seeing stories that aren't reachable by the time i click them.
SIG:Slashdot: indymedia for nerds.
Let the flames commence, because I *do* think it's ingenious.
Essentially Microsoft is rewriting TCP to make it UDP-like by sacrificing TCP's guaranteed delivery for a speed boost. Since HTTP is essentially stateless, this doesn't sound like an overly bad idea.
I do have one question, however; how is it that Internet Explorer is able to rewrite TCP rules? Doesn't it use win32's TCP service? Or does it call a different, special TCP service?
"Times have not become more violent. They have just become more televised."
-Marilyn Manson
What RFC means to MSFT:
"Rules For Competitors." Not for themselves.
I pledge allegiance to the flag...
of the Corporate States of America...
"They are only kept in the RAM cache"
Isn't a "RAM cache" a cache? Did the parent specifically mention disk cache?
IE is fast because Microsoft know Windows coding inside and out. When you run iexplore.exe, no, it's not loaded at startup, the executable just loads the relevant COM objects. The UI appears first, then their rendering engine (Trident) is loaded async which is why you see a flat white area when IE is loading for a second or two before it becomes a 3D cutout. Everything is load on demand. That's why it's fast.
Office is fast because the Office coders aren't stupid. They don't pull any OS startup tricks or anything to make that happen. How do I know this? Because I once reinstalled Windows on top of Office - deleted the whole of the windows directory and reinstalled it. Word still started in under 3 seconds, although it gave one or two complaints about missing registry entries it started fine, and boy was it fast.
Maybe IE still pulls this trick, maybe it doesn't, but at the end of the day IE feels fast because they've put a lot of work into optimization. You'll note that Mozilla is catching up now as they also get the optimizations in.
Of course, when your target market is non-scalable toy computers, who cares if you software isn't scalable either.
That's right, who cares if it violates standards to do so? I run Windows! All bow before me! Fuck the rest of you that don't run Windows!
Who cares if thousands of gallons of oil gets dumped in the ocean? I drive an SUV! As long as the oil gets to me, who gives a fuck?
I run stop signs--it gets me to work quicker! Who cares if I break the law--as long as I get there!
Who cares if Enron ripped off their employees? As long as I get power, who gives a fuck?
"One possible explanation is something that my team and I noticed a couple of years ago"
They had IE 3 a "couple" of years ago. This article is based on faulty data from two or three years ago, which the author even admits.
Maybe the editors should read the links in stories before posting the stories, it gives Slashdot a bad name to be posting articles like this.
You'll care when you can't load a large percentage of the sites on the Internet because each of them has gradually moved to following its own vendor's whims in the interest of gaining marketshare, instead of the standard that allows them to communicate with one another...
I for one am having the exact same results as you are. And realistically, I don't think any of this crowd will heed your post. It's too unhumiliating for IE.
On another note, I personally *am* plagued by this IE being super slow thing. And unlike some, I've looked into it logically: it happens 99.9% of the time if a javascript launches a new window, or if a link is Targeted.
I'm personally inclinded to think it might have to do with DNS. But I don't know. And I don't go around accusing people.
For christ' sake, even the poster says: my team and I noticed a couple of years ago
Whatever.
And the cherry on top of the whipping cream:
I have to admire their arrogance and their confidence. But it'll be some time before I can bring myself to admire their technical integrity.
The HTTP spec allows keep-alive between the browser and the proxy. No extra magic needed there.
Lynx is faster... :)
Comment removed based on user account deletion
RFC = Read, Forget, Change?
Why not fork?
This is more than just a persistant connections. What IE is doing is sending the request for the page *before* any sending SYN or ACK packets that every TCP/IP application is supposed to send.
.. note: the connect request does not return until it has been acknowledged.
... where the WSAConnect call has data it will send with the connect packet inside it.
I think you'll find that the request is sent with the connection request, and is perfectly legal TCP/IP.
The thing is, BSD sockets doesn't let you easily do this.
Most Unix apps do this:
SOCKET s = socket(...);
s.connect(...);
s.send(...);
What IE is doing is this:
SOCKET s = socket(...);
WSAConnect(...);
This is ALL perfectly valid TCP. Remember; the flags in the packet are what determine how to handle the incoming packets; the data is handled separately. You can quite happily send data with your connect request, as long as you're willing to accept that the request may well fail.
Simon
Coming soon - pyrogyra
Atleast from IE's point of view. It sounds as though the way pipelining is done is by simply trying a request first and they are using some low level api to the network stack. So if the connection happens to be open they get a speed up, if not they get a slow down. Seeing as the connection is going to be open more than it is closed it's a general plus.
No, they're just calling
WSAConnect (MSDN Library documentation).
But hey, who am I to get in the way of a good conspiracy theory with real data?
Simon
Coming soon - pyrogyra
1) send FIN
2) wait for ACK
3) wait for FIN
4) send an ACK
if the server never receives the FIN in step 3, it assumes that the client wants to keep the connection open for some reason. this is _correct behaviour_ with regards to the TCP spec. if this article is correct, MS is merely exploiting the TCP spec to its advantage. yes, it's dirty and wastes resources, but it works.
the thing that bothers me tho, is this is what should be happening on the server end (a non-IIS server, that is):
1) send FIN
2) wait for ACK
3) ok, got ACK, now wait for FIN
4) (after timeout) hmm, no FIN, must have been lost, so we'll resend our FIN
5) client ACKs that FIN, but doesn't send its FIN
6) server thinks the response FIN is lost again, so probably resends its FIN
now the server will have a max amount of retries before it gives up and finally drops the connection (which is what it was trying for in the first place anyway). this should be a relatively low number, and the timeouts between each retransmission shouldn't be that long either. so unless IE comes back and requests another page fairly quickly, the server _should_ go ahead and drop the connection, so i fail to see how this is a problem.
the only thing i can think of is that the client keeps responding with an ACK to the server's FINs (despite not sending its own FIN), so maybe the server won't drop the connection for that reason (since the client is obviously still alive, just not responding as expected). i don't remember the TCP spec all that clearly with regards to connection teardown, so that may be where IE is able to keep the connection open.
then again, i could be totally wrong here, but i don't think so...
Xfce: Lighter than some, heavier than others. Just right.
Since when was there anyone else... that mattered? :)
Majority rules baby. Live with it or do something to change it.
My results match yours, using Win98SE. However, it's been updated to use the latest version of IE. The blogger stated that these results are from a few years ago, so I'd do some more research before denouncing it as a hoax.
Having switched over to Opera for research, work and school, I've noticed Opera is fast to *use*. That is, tabbed browsing, mouse gestures, and a well thought-out interface makes Opera more efficient to use. The raw TCP performance is not the bottleneck, the user is.
No one has ever fired for blaming Microsoft.
Not a standard. RFC 1644 is classed experimental; it's not a standards-track protocol. See The Internet Standards Process (RFC 2026). The claim in the story leader that Microsoft were somehow ignoring RFCs looks, uh, foolish though, which is the point you were making.
700+ comments, 95% of which are:
- MS sucks for breaking RFC's
- Apache should do something about it
- Users of IE are clueless morons.
All of this because some blogger can't read a packet trace correctly. Everyone in the thread who's actually TRIED it (the other 5%) hasn't seen this behavior.
There's no way anything's going to work if IE doesn't send a SYN. Nothing, Nada, Zip. It just won't happen. Firewalls, NAT, transparent proxies would kill it. IIS isn't going to care, the TCP/IP stack won't even let it get there. Same goes for Apache. Get THE book on TCP/IP and find out why.
I think this thread is a prime example of what Slashdot has become. Never mind news for nerds (definition not limited to the Linux crowd) and stuff that matters. We'll post anything as long as it's anti-MS.
No sig, sorry.
How about this one?
1. Sell anthrax and other biological weapons to Saddam Hussein.
2. Wait a few years.
3. "Discover" that Iraq owns weapons of mass destruction, and start a war against them.
4. Replace their nasty military dictator with a friendly military dictator.
5. Steal their oil.
6. Profit!
No, wait...
There is no "?" in that one.
...because if you're IIS server is maxing out on connections, chances are you'll have to add another one; and another IIS licensce at several hundred a pop :).
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
I don't know where you get those "95% of which are blabla" from, but I see 800+ comments:
- 70% "the article is fake!" or "I tested it but IE use standard TCP requests. fuck you anti-Microsoft Linux zealots!"
- 10% "MS sucks"
- 10% junk/flamebait/trolls/crapfloods
Sorry, but your claims are completely false. Slashdot is everything but anti-MS. Why do you think your post is modded as +5 Insightful?
That Slashdot is an anti-MS site is simply false. People have been saying how Slashdot is anti-MS for centuries but every time I browse through the comments, there are always lots and lots of pro-MS comments, a lot of them are even modded +3/+4/+5.