Yii Framework Forum: Yii preformance - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Yii preformance Rate Topic: -----

#1 User is offline   Ramin Farmani 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 55
  • Joined: 14-April 09
  • Location:Mashhad Iran

Posted 06 May 2010 - 10:43 AM

I'm a veteran php coder and this days I received an offer to a totally high traffic web site it's a bottleneck on choosing among a dozen of frameworks stands over there and making mistakes takes a big price for me so I wanna to ask you about the reality in this area not just some damned motto which is there choosing a framework for such a high traffic web site reasonable and is there Yii the best one or not? founding a good answer about this simple/hard question sounds too hard!
0

#2 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 06 May 2010 - 10:49 AM

Did you read this?

About Yii
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#3 User is offline   Ramin Farmani 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 55
  • Joined: 14-April 09
  • Location:Mashhad Iran

Posted 06 May 2010 - 05:14 PM

View PostPoL, on 06 May 2010 - 10:49 AM, said:

Did you read this?

About Yii

Yap I read it before but an old Persian expression say "a dairy never say it's yogurt is sour!" when you see some exaltation it's a bit hard to believe all of them is true. I need some practical tests not just a hello word benchmarking actually it says nothing about the performance if you really want to compare you should write hole a project with two different framework and then running your benchmarking.
0

#4 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 07 May 2010 - 02:09 AM

@ramram:
Using a framework always comes with a tradeoff compared to "pure" PHP. That's the price you have to pay, but you get better organized code and have ready-to-use solutions for common web app problems. Still i recommend you to give Yii a try: It tries to stay very slim and only loads what's really required for handling a request. You can make it stay out of the way if you want to handle some specific action solely with your custom code.

So if you're like me and like the freedom to do whatever you want in PHP but still having the option to use prepared components (which are coded mostly excellent btw.), Yii is perfect for you.
0

#5 User is offline   Q-efx 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 12-April 09

Posted 07 May 2010 - 07:52 AM

Well, when you look for something with "high" performance, Yii is something to check out. But first you should look on "development" speed. And not only on framework speed.

Things you should checkout or think about:

a ) Is it possible to write C(++) code and use it in the framework

B ) How quick could I write plugins, extension? (For example RoR is a pain imho)

c ) How good is the cache management and usage? Is it easy to extend? Modify? Test? And how fast is it?

I could not help on a) cause I dont wrote any C++ code for yii -_- but:

B ) Yii is one of the best,if not THE best framework to extend. I dont found any framework so far with such a good API, API hooks and events, as Yii

c ) Yii has a quit impressive cache management system, cause it loads just "what" is needed and is easy to extend ot change (even the cache backend)

Well, another good framework is Grails, its amazingly close to RoR, but i compiles to Java, which gives some extra boost (Not as fast as pure java code) but its close to it.

Well, if you want to check out new "ways" you should checkout LUA, if you are in a "geeky" mood, or even the lisp webframework (forgot its name)
----------------------------------------------------
United-Regions-OFP

A social development project  ( In development ;-) )
----------------------------------------------------
0

#6 User is offline   Ramin Farmani 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 55
  • Joined: 14-April 09
  • Location:Mashhad Iran

Posted 08 May 2010 - 08:19 AM

Thanks a lot for your technical and logical replay. fortunately :) I have no choice except PHP.
I have a really good support on Server for unlimited cache services but my agreement with client is based on the best performance as possible to reduce the price of servers and so on.
my client suggest to run some practical tests to get in hand a real benchmarking on Framework vs. PHP hard code to deal with this bottleneck. anyway I do my best to reduce database size and fully implementation of any kind of cache services. and I release the result here to be a good source for whom faced with this question and situation. and I think it cost to test Yii on a practical high traffic web site.
0

#7 User is offline   Q-efx 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 12-April 09

Posted 09 May 2010 - 05:11 AM

What was the old spell:

So should it be written, so should it be done? :)

If you really need the best speed, you must write your own code. And you will end on a "micro" framework. Something like fatfree or mimvic. Which just adds MVC to your code (or it will be horrible to extend and modify) and add a database layer to it which makes some common database calls, like getting and checking user logins.

At sum it is something like:

Maintainable <-> Speed comparison of code.

Another things you could checkout are other PHP server programs, for example nginx or cherokee. But they have a drawback compared to apache. Apache integrates PHP on load, while the rest runs over fcgi. This means a new instance on every call. But on static pages this dosnt matter but on hundreds of servers... But this will be fixed in a future version of php which will integrates a new way for fcgi calls, and handling. If you have time until this version of php will be released, it is something to wait for :)
----------------------------------------------------
United-Regions-OFP

A social development project  ( In development ;-) )
----------------------------------------------------
0

#8 User is offline   Ramin Farmani 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 55
  • Joined: 14-April 09
  • Location:Mashhad Iran

Posted 09 May 2010 - 04:21 PM

Dear all I told you I'm trying to run more practical test on yii to show what is the gap between it's performance with other frameworks and raw php here is the result. my test server was a Windows7 Home Premium machine with intel corei7 1.6GHz up to 2.8GHz CPU and 4GB DDR3 RAM running XAMPP with PHP 5.3.1, Apache 2.2.14, MySQL 5.1.41
database has been generated bycode below.
<?php

/**
 * @author phpveteran
 * @copyright 2010
 */

/* Connecting, selecting database  */
$db_link = mysql_connect("localhost", "root", "ringsport");
if (!$db_link) {
   die("Could not connect: " . mysql_error());
}
mysql_select_db("benchmarking") or die("Could not select database");
set_time_limit(0);
/* Performing SQL query */
for($i=29;$i<50000;$i++){
	$base='ABCDEFGHKLMNOPQRSTWXYZabcdefghjkmnpqrstwxyz123456789';
	$max=strlen($base)-1;
	mt_srand((double)microtime()*1000000);
	$rand_text='';
	while (strlen($rand_text)<251)
	$rand_text.=$base{mt_rand(0,$max)};
	$query = "INSERT INTO `benchmarking`.`text_var` (
				`id` ,
				`random_var` ,
				`random_text`
			)VALUES (
				NULL , '$rand_text', '$rand_text');";
	mysql_query($query);	
}


/* Closing connection */
mysql_close($db_link);
?>

Raw PHP:
<?php

/**
 * @author phpveteran
 * @copyright 2010
 */

/* Connecting, selecting database  */
$db_link = mysql_connect("localhost", "root", "ringsport");
if (!$db_link) {
   die("Could not connect: " . mysql_error());
}
mysql_select_db("benchmarking") or die("Could not select database");
set_time_limit(0);
/* Performing SQL query */

$query = "SELECT * FROM `text_var` WHERE `random_var` = '6CEM3cjkRSg8gLgDSMSyQHwSCeNaPrRhKPMFShQYSFygqZhwY4NWpweEENCSxMghMqfOB9K2tQ6kNCfEnqtaSTMMKdnEhwfQfKnsnBQr2ZATE1ARcKLbfT417tpHDQ4hPe3jScMZHZEpLpn8sMs8QDPSyWkQNjWqqCLGtn3sAkKD1fSbk14TamcKEHn5c2txDEEaswwtQKLfQKgmfXEp3nwq8HMNYxTSkDSY3ZBRMhKNb55H1tM2zcG8Za'";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
    var_dump($row);
}

/* Closing connection */
//mysql_close($db_link);

?>


Yii clean and fresh setup SiteController.php and actionIndex
public function actionIndex()
	{
		// renders the view file 'protected/views/site/index.php'
		// using the default layout 'protected/views/layouts/main.php'
		//$this->render('index');
		$connection=new CDbConnection('mysql:host=localhost;dbname=benchmarking','root','ringsport');
		$connection->active=true;
		$dataReader = $connection->createCommand("SELECT * FROM `text_var` WHERE `random_var` = '6CEM3cjkRSg8gLgDSMSyQHwSCeNaPrRhKPMFShQYSFygqZhwY4NWpweEENCSxMghMqfOB9K2tQ6kNCfEnqtaSTMMKdnEhwfQfKnsnBQr2ZATE1ARcKLbfT417tpHDQ4hPe3jScMZHZEpLpn8sMs8QDPSyWkQNjWqqCLGtn3sAkKD1fSbk14TamcKEHn5c2txDEEaswwtQKLfQKgmfXEp3nwq8HMNYxTSkDSY3ZBRMhKNb55H1tM2zcG8Za'")->query();
		while($row=$dataReader->read()){
			var_dump($row);
		}
		exit;
	}

Zend framework fresh and clean IndexController.php indexAction
public function indexAction()
    {
        // action body
        set_time_limit(0);
		require_once 'Zend/Db.php';
		$db = Zend_Db::factory('Mysqli',
				array(
					'host' => 'localhost',
					'dbname' => 'benchmarking',
					'username'=> 'root',
					'password' => 'ringsport')
				);
		$stmt = $db->query("SELECT * FROM `text_var` WHERE `random_var` = '6CEM3cjkRSg8gLgDSMSyQHwSCeNaPrRhKPMFShQYSFygqZhwY4NWpweEENCSxMghMqfOB9K2tQ6kNCfEnqtaSTMMKdnEhwfQfKnsnBQr2ZATE1ARcKLbfT417tpHDQ4hPe3jScMZHZEpLpn8sMs8QDPSyWkQNjWqqCLGtn3sAkKD1fSbk14TamcKEHn5c2txDEEaswwtQKLfQKgmfXEp3nwq8HMNYxTSkDSY3ZBRMhKNb55H1tM2zcG8Za'");
		$stmt->execute();
		while ($data = $stmt->fetchAll()) {
    		var_dump($data);
		}
		exit;
        
    }

now bench marking result:
Raw PHP:
C:\xampp\apache\bin>ab -t 20 -c 4 http://localhost/random_text/index.php

Benchmarking localhost (be patient)
Finished 125 requests


Concurrency Level:      4
Time taken for tests:   20.585 seconds
Complete requests:      125
Failed requests:        0
Write errors:           0
Total transferred:      155575 bytes
HTML transferred:       117856 bytes
Requests per second:    6.07 [#/sec] (mean)
Time per request:       658.726 [ms] (mean)
Time per request:       164.681 [ms] (mean, across all concurrent requests)
Transfer rate:          7.38 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.4      0       1
Processing:   596  642  58.2    632     878
Waiting:      596  642  58.1    631     877
Total:        596  643  58.2    632     878

Percentage of the requests served within a certain time (ms)
  50%    632
  66%    634
  75%    654
  80%    678
  90%    711
  95%    745
  98%    877
  99%    878
 100%    878 (longest request)


Yii Framework
C:\xampp\apache\bin>ab -t 20 -c 4 http://yii.local/index.php

Benchmarking yii.local (be patient)
Finished 109 requests


Concurrency Level:      4
Time taken for tests:   20.322 seconds
Complete requests:      109
Failed requests:        0
Write errors:           0
Total transferred:      133525 bytes
HTML transferred:       101152 bytes
Requests per second:    5.36 [#/sec] (mean)
Time per request:       745.767 [ms] (mean)
Time per request:       186.442 [ms] (mean, across all concurrent requests)
Transfer rate:          6.42 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.4      0       1
Processing:   630  728 104.4    709    1047
Waiting:      630  727 104.3    709    1047
Total:        630  728 104.4    709    1047

Percentage of the requests served within a certain time (ms)
  50%    708
  66%    730
  75%    777
  80%    822
  90%    888
  95%    955
  98%   1047
  99%   1047
 100%   1047 (longest request)

Zend Framework
C:\xampp\apache\bin>ab -t 20 -c 4 http://zf.local/index.php

Benchmarking zf.local (be patient)
Finished 49 requests

Concurrency Level:      4
Time taken for tests:   20.722 seconds
Complete requests:      49
Failed requests:        0
Write errors:           0
Total transferred:      64821 bytes
HTML transferred:       49674 bytes
Requests per second:    2.36 [#/sec] (mean)
Time per request:       1691.607 [ms] (mean)
Time per request:       422.902 [ms] (mean, across all concurrent requests)
Transfer rate:          3.05 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:  1299 1608 230.1   1599    2091
Waiting:     1298 1607 230.0   1598    2089
Total:       1299 1608 230.1   1600    2091

Percentage of the requests served within a certain time (ms)
  50%   1534
  66%   1679
  75%   1733
  80%   1754
  90%   1910
  95%   2090
  98%   2091
  99%   2091
 100%   2091 (longest request)

0

#9 User is offline   james2010 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 19-February 10

Posted 01 June 2010 - 06:47 AM

check this test http://www.yiiframew...om/performance/ and this

http://symfony-reloaded.org/fastso you can see that yii have a nice performance.

maybe symfony 2.0 is faster but anywhere symfony 2.0 is still under development.

in this test http://www.yiiframew...om/performance/ i cant believe that

prado is faster then symfony
0

#10 User is offline   Ramin Farmani 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 55
  • Joined: 14-April 09
  • Location:Mashhad Iran

Posted 01 June 2010 - 06:56 AM

View Postjames2010, on 01 June 2010 - 06:47 AM, said:

check this test http://www.yiiframew...om/performance/ and this

http://symfony-reloaded.org/fastso you can see that yii have a nice performance.

maybe symfony 2.0 is faster but anywhere symfony 2.0 is still under development.

in this test http://www.yiiframew...om/performance/ i cant believe that

prado is faster then symfony

here is something I should mention symfony benchmarking seems fishy and comparison is not fare enough to make a decision. it's because symfony used router cache by default that can have a serious bottleneck on high request for any other frameworks I totally refuse any benchmarking on just running the damn hello word! it shows nothing
0

#11 User is offline   james2010 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 19-February 10

Posted 01 June 2010 - 07:21 AM

what do you think about the symfony test ?

http://symfony-reloaded.org/fast there is a product application test as well
0

#12 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 01 June 2010 - 07:30 AM

This topic was discussed many times!!!

The fact is that every framework will say: "I'm the faster", or "I'm in the fastest framewroks"

This doesn't matter...

@all_of_you
If the only concern for you to chose one framwork over another is if it is "the fastest", then compare those frameworks yourself with test that are good for you and choose based on these tests!

As already somebody in this forum says, a framework in not only how fast it is, but how simplifies your life in every aspect of programing cicle!
Don't say what you think, think what you say
The problem is communication! Excess of communication!
1

#13 User is offline   Ramin Farmani 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 55
  • Joined: 14-April 09
  • Location:Mashhad Iran

Posted 01 June 2010 - 09:19 AM

View PostPoL, on 01 June 2010 - 07:30 AM, said:

This topic was discussed many times!!!

The fact is that every framework will say: "I'm the faster", or "I'm in the fastest framewroks"

This doesn't matter...

@all_of_you
If the only concern for you to chose one framework over another is if it is "the fastest", then compare those frameworks yourself with test that are good for you and choose based on these tests!

As already somebody in this forum says, a framework in not only how fast it is, but how simplifies your life in every aspect of programing cicle!

if you read through the the treat you will see I asked this for a very special project that should handle high traffic and concurrent users. reasons to choose one framework among the others is not distinguished as you think over there we have a dozen of really good frameworks cack/zend/yii/symfony and so on all of them have a very good architecture, design, documents, forum and so on. so if you want to choose one you should focus on some details like performance / security and something that people like you always said WE DO NOT CHOOSE FRAMEWORKS ONLY FOR PERFORMANCE! yup dude it's deal we should choose frameworks only for some details because all of them are good
0

#14 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 01 June 2010 - 09:32 AM

So, because of this:

Quote

reasons to choose one framework among the others is not distinguished as you think over there we have a dozen of really good frameworks cack/zend/yii/symfony and so on all of them have a very good architecture, design, documents, forum and so on. so if you want to choose one you should focus on some details like performance / security and something that people like you always said WE DO NOT CHOOSE FRAMEWORKS ONLY FOR PERFORMANCE! yup dude it's deal we should choose frameworks only for some details because all of them are good


, you fall in this:

Quote

If the only concern for you to chose one framework over another is if it is "the fastest", then compare those frameworks yourself with test that are good for you and choose based on these tests!


Then, DO your own test... and choose bases on these tests...
Don't ask in yii's forum "is yii the best one?" (all here will say "Yes for me").... the same (i think) will happen y you ask in symphony forum "Is symphony the best?" (all of them will say "Yes for me")

So the final desicion is up to you...
You will not rest easy until you do your own tests and see the results...
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users