New Fiddler Alpha

44 views
Skip to first unread message

EricLaw

unread,
Jan 23, 2011, 6:22:54 PM1/23/11
to Fiddler
I've made available a sneak-preview of an upcoming change to Fiddler
that makes it far more responsive on Windows Vista and Windows 7. You
should find that in this new version, Fiddler's UI remains far more
responsive while under heavy load.

http://www.fiddler2.com/dl/Fiddler2Alphasetup.exe

Please let me know if you encounter any bugs!

Chad Sowald

unread,
Jan 25, 2011, 4:20:49 AM1/25/11
to Fiddler
Will you be posting anything about the changes over at http://blogs.msdn.com/b/fiddler/
? I don't have Vista/7 to try this out on, but I'm curious
nonetheless.

EricLaw

unread,
Jan 26, 2011, 9:54:32 AM1/26/11
to Fiddler
Chad-- The summary is that Windows Vista+ do not hardware accelerate
all of GDI, so adding items to the session list view takes
dramatically longer on those platforms. When sessions are coming in
slowly, there's no real difference (GDI isn't *that* slow) but if
they're coming in fast, the UI can hang for a second or more as it
tries to catch up. If I rewrote Fiddler from GDI-Winforms into D2D-
WPF, the problem goes away, but that would require a ton of work and
would be a big breaking change for many extensions.

What I did instead is start batching updates to the Session List
View-- instead of adding sessions one at a time
(Listview.Items.Add()), instead I add groups of sessions
(ListView.Items.AddRange([])) every 100ms or so (configurable via the
fiddler.ui.sessionlist.updateinterval preference). This enables
Windows to do far less work in GDI which in turn keeps Fiddler much
more responsive. For some sample Meddler scripts I built that "flood"
dozens of images per second the improvement is on the order of 20x or
so.

I put off doing this for a long time because I was afraid that I would
break a lot of extensions and even a lot of my own code. It turns out
that this was relatively easy to do. The only problem will be if any
code tries to manipulate the session's ListViewItem in one of the
callbacks (BeforeRequest, BeforeResponse, etc). While the ViewItem
property is still assigned immediately after the request is read, the
item often won't be in the ListView yet, and hence doing something
like lvSessions.EnsureVisible(Session.ViewItem.index) will throw an
exception complaining that "-1 isn't a valid index." Fortunately, it
looks like this probably won't be a big problem, but I'm keeping an
eye out. There are a few more minor tweaks I need to make (e.g.
TrimSessionList(#) doesn't work quite right with the new architecture
yet) but this change will likely hit the beta and release branches
shortly.

thanks,
-Eric



On Jan 25, 1:20 am, Chad Sowald <chadsow...@gmail.com> wrote:
> Will you be posting anything about the changes over athttp://blogs.msdn.com/b/fiddler/
> > Please let me know if you encounter any bugs!- Hide quoted text -
>
> - Show quoted text -

Vadim Kleyzit

unread,
Jan 27, 2011, 9:42:32 PM1/27/11
to Fiddler
Eric, Thanks for explaining the change in the alpha. I load tested it
compared to the current version and found a significant performance
increase. Load test results are posted here:
http://stresstimulus.ning.com/profiles/blogs/new-fiddler-alpha-boosts
I did not find any issues, and visually could not tell that sessions
are loaded in batches, until I read your post.

I wonder, when approximately you plan to move the alpha to beta or
prod?

Thanks
-Vadim

EricLaw

unread,
Jan 28, 2011, 12:34:36 PM1/28/11
to Fiddler
Interesting. How much of an improvement do you see if you use the
Filter in the status bar to Hide All sessions?

Also, see what happens if you adjust the update interval; in
QuickExec, type

about:config

And edit/add a preference named

fiddler.ui.sessionlist.updateinterval

and set it to a value of say, 2000.

Does this meaningfully increase throughput?

The update will probably make its way to the beta channel over the
next week or so.

On Jan 27, 6:42 pm, Vadim Kleyzit
> > > - Show quoted text -- Hide quoted text -

Vadim Kleyzit

unread,
Jan 28, 2011, 8:23:52 PM1/28/11
to Fiddler
Eric, One clarification on my previous note. The load test that
mentioned was performed on Windows Server 2003, which has hardware-
accelerated GDI. So your optimization in alpha improved Fiddler
performance on pre-Vista platforms as well.

Below is the statistics of the same test scenario with Facebook
homepage on Windows 7, using the tweaks that you have suggested. I ran
each test 5 times and compared two parameters: average test run
duration and average requests/sec. Improvement % is shown in
parenthesis.

Test run duration:
- Fiddler Prod (baseline): 100.5s
- Fiddler Alpha: 14.3s (703% !)
- Fiddler Alpha, batch update time 2s: 14.0s (715%)
- Fiddler Alpha, all session are hidden: 11.9s (843%)

Requests/sec
- Fiddler Prod (baseline): 16.4
- Fiddler Alpha: 68.3 (417%)
- Fiddler Alpha, batch update time 2s: 68.5 (418%)
- Fiddler Alpha, all session are hidden: 80.9 (494%)

Because in this test Fiddler was not the only slowdown factor, the
4-7x times performance increase suggests that Fiddler alpha got faster
by a much greater number. Increasing
fiddler.ui.sessionlist.updateinterval to 2s was negligible, while
hiding sessions altogether was more meaningful. I also noticed that in
alpha performance was much more stable. Relative standard deviation of
measurements was reduced from 49% in prod to fewer than 10% in alpha.
It means that random factors will have much less influence on
performance metrics in the new Fiddler.

Look forward to the next beta cycle.

Thanks,
-Vadim


On Jan 28, 12:34 pm, EricLaw <bay...@gmail.com> wrote:
> Interesting. How much of an improvement do you see if you use the
> Filter in the status bar to Hide All sessions?
>
> Also, see what happens if you adjust the update interval; in
> QuickExec, type
>
>     about:config
>
> And edit/add a preference named
>
>    fiddler.ui.sessionlist.updateinterval
>
> and set it to a value of say, 2000.
>
> Does this meaningfully increase throughput?
>
> The update will probably make its way to the beta channel over the
> next week or so.
>
> On Jan 27, 6:42 pm, Vadim Kleyzit
>
> <Vadim.Kley...@stimulustechnology.com> wrote:
> > Eric, Thanks for explaining the change in thealpha. I load tested it
> > compared to the current version and found a significant performance
> > increase. Load test results are posted here:http://stresstimulus.ning.com/profiles/blogs/new-fiddler-alpha-boosts
> > I did not find any issues, and visually could not tell that sessions
> > are loaded in batches, until I read your post.
>
> >  I wonder, when approximately you plan to move thealphato beta or
> > prod?
>
> > Thanks
> > -Vadim
>
> > On Jan 26, 9:54 am, EricLaw <bay...@gmail.com> wrote:
>
> > > Chad-- The summary is that Windows Vista+ do not hardware accelerate
> > > all of GDI, so adding items to the session list view takes
> > > dramatically longer on those platforms. When sessions are coming in
> > > slowly, there's no real difference (GDI isn't *that* slow) but if
> > > they're coming in fast, the UI can hang for a second or more as it
> > > tries to catch up. If I rewroteFiddlerfrom GDI-Winforms into D2D-
> > > > > should find that in this new version,Fiddler'sUI remains far more

EricLaw

unread,
Jan 29, 2011, 1:13:23 AM1/29/11
to Fiddler
very cool-- thanks for sharing your results!

-Eric

On Jan 28, 5:23 pm, Vadim Kleyzit

Vadim Kleyzit

unread,
Jan 29, 2011, 9:33:28 AM1/29/11
to httpf...@googlegroups.com
You bet.

-Vadim
Reply all
Reply to author
Forward
0 new messages