A: 

I think to get a better Benchmark on these, you should check the time in sql profiler not in google chrome, because in the browser it may be a lot of things affect the speed on the page load.

Amr ElGarhy
I have disable all google chrome extensions, how ever if this extra time exist, then is the same for all tests.
Aristos
this means that if you refreshed the page for one ORM you will get the same number, is this the result?
Amr ElGarhy
yes ! you get the same number - I have refresh the page 1 time for compile, then 3 times to see the number is the same, then I get the capture.
Aristos
So you are right, and i thought wrong.
Amr ElGarhy
it's ok to asking.For me its very critical the speed of the tool that I am going to use, so I need to know, and share this experience with others, and maybe found any mistakes that I have made.The right tool, is critical because I start learn it, spend time with it, and after months and years of developing if I discover that I have made mistake, then to go back and use something else is painful.
Aristos
Dear Amr, I have update the article, to prove that google chrome actually count what I ask for, also I have include more measures and more details.
Aristos
thanks you for supporting us with these info, really helpful.
Amr ElGarhy
A: 

Your speed test is a web page that, to my eyes, looks like your testing how long it takes to load. SubSonic isn't that slow and testing load time in a web page is rather ridiculous.

If you want to truly benchmark something you need to use a Console and run read loops that work against indexed data. What you've done is create a web page and say "let's see what happens on load".

This is flawed for a number of reasons. First - all of the code written needs to be compiled from IL do ML. Because SubSonic generates your code for you, and because I know you have a lot of tables here (300+ if I remember right), you can imagine there's some work going on under the covers on your first load.

To be perfectly honest here - your inexperience is undoing a lot of work I've put in for free, by posting things like "it's slow and not ready". I don't care if people use SubSonic - I do care when people do dumb things (like benchmark web tests) and blame me for it.

Rob Conery
Dear Rob, the speed I measure is the TIME TO TAKE TO GET THE DATA. The time to load the page is the next one thats follows. The example is here, please get it and feel free to make a new example, or improve this one.
Aristos
Rob, take a moment to make some tests by your self, download chrome to see how it works and what its shows. There is a very easy way to show what is slow and what is not - how ever some one not need chrome to measure the speed, because the different are very big and you can feel it right way - that the way I understand that something going slow and start make tests.
Aristos
This example is using the Northwind database ! If you ever take the time to download and tell me whats really wrong !
Aristos
your inexperience is undoing a lot of work I've put in for free - the free is not an excuse to get anything that is not work. You are very experience, why not take it run faster ? I like to point here that you are not talk about the subject here that is the slow speed, you attact to me say that I am inexperience, and your second argument is that is free. Both argument even if they are right, they not change the speed I have post here !!!
Aristos
Dear Rob, I am not blame you. Now you have a site, you speak a lot there, why not make yours benchmark, placing the source code like I did and post the results thats shows something different ? And if you do that and prove the I am wrong, I am take all back, and give you credits for that. After all I have all ready give you for subsonic 2 !!! that is super fast super good, and I work with it more than 3 years now - and I recommender and support it. I have also optimize subsonic 2 and make it run faster - if you wish you can get the source code. How ever until now you ignore me.
Aristos
-1: denigrating an honest, intelligent and well-researched question because of your personal association with its subject. Inappropriate and unprofessional and the posters language difficulties are no excuse.
RBarryYoung
@RBarryYoung Sorry but, this question is neither intelligent nor well-researched it's an ill conceived rant. Basically this guy's saying I've found a specific situation where x is slower than y therefore y is too slow and sucks.
Adam
Adam, I am practical person, I have see this delays on real program, real data, with real users... its not only this situation, I only have place here this test to give it as an idea.
Aristos
+1  A: 

Based on your example you can improve the performance by using the following code:

 StringBuilder Test = new StringBuilder();
 int[] MiaSeira = { 5, 6, 10, 100, 7 };
 for (int i = 0; i < 100; i++)
 {
     foreach (int EnaID in MiaSeira)
     {
         var Products = (from product in Product.
             where MiaSeira.Contains(product.ProductID)
             select product).ToList();

         if (Products == null || Products.Count == 0)
             continue;

         foreach (Product product in Products)
         {
            Test.Append("<br />");
            Test.Append(product.ProductName);
         }
     }
 }

 txtDebug.Text = Test.ToString();
Adam
Adam, thank you for your time to give me this but actually something else I have on my mind. So I update the article giving a better idea.
Aristos
So I offer you a solution and you immediately change your question, what do you have in mind now?
Adam
I think Products will never be null when used like this, and instead of using Products.Count you could use Products.Any() which returns true of there are records in the list, false otherwise.
John Boker
A: 

I don't have firsthand experience with subsonic, but if it is doing a bunch of code generation, you might want to post separate results for the first request (cold), and an average of subsequent requests (warm). You should also use a Stopwatch to time just the data extraction part, so you don't conflate other timings into your data.

Jimmy
Ok, I will do that, please give me some time.
Aristos
Jimmy I have update the article, including now capture of 4-5 requests in a row, and many other infos
Aristos
A: 

Aristos, here's the thing I'm having an issue with. You posted a question to our groups and we had a nice, 23-long email exchange. You insisted that SubSonic 3 has problems and you asked me why I haven't fixed this "slow, broken tool".

I tried to explain to you that, with 233 tables, SubSonic has to read the schema of EACH ONE on load up. This isn't typical usage for SubSonic 3, but we do it this way so it's actually FASTER than SubSonic 2 on subsequent loadups.

You're ingoring this. I'm answering you. RBarry left a comment above that I was beind "denigrating". I'm quite frustrated. You seem to think that I haven't benchmarked this thing and I have, MANY MANY times. I can't turn out an ORM with problems like the one you suggested, and I didn't.

You have to understand that if it took SubSonic 10 seconds to run a query, then it wouldn't be used.

So - your answer: 233 tables, scripted out as classes, need to load to Provider memory on first run.

That's too many. SubSonic isn't your tool.

Rob Conery
Dear Rob, I have say to you a lot of times, I have 4 database, only one have 233 tables the other have 10 tables only. The delay is even in those with 10 tables. All my work and my reports is to help out to find out why the delay, and how to fix it, or tell to me how to correct it. But please I say to you again, the tests here is with Northwind database.
Aristos
Rob, I must give you credits and my gratitude for both subsonic 2 and 3. Subsonic 2 is very good, fast, easy to use, and after some more optimizes is even faster (why you do not won the source code of this extra optimizes ?). I start work with subsonic 3 that it is a lot of easier and very cool and very nice, I like it - how ever need work with the speed, accept it and think how to fix it. Actually I like to ask you, what tool do you have use to measure the speed of both of them ? Do you see the screen captures of my speed profiling ? Do you see the actual delays inside subsonic 3 ?
Aristos
Rob, The very interesting think here is that you still denied the problem, and you do not try to see what you do to improve your program. What do you think ? that this delay is not exist ? this is a rare case ? is my fault ?. Why not accept it and try to fix it ? Why not try to improve it ? You never going to make a perfect tool this way by avoid the critic, or say to anyone, "the subsonic isn't your tool" just because they find bugs and improvements thats needs. Rob, I do not have anything with you, as I say Subsonic 2 is super cool and recommended, but subsonic 3 needs work.
Aristos
Submit a patch or go away. I'm growing a bit weary of your obsessive brow-beating.
Rob Conery