Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

kendi yazdigim framework Smceframework-MVC

Konu, 'Framework / MVC' kısmında ceida tarafından paylaşıldı.

  1. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    [​IMG]

    Proje nereye gidecek inanan bende bilmiyorum :D hello world c++
     
  2. sineld

    sineld Daimi Üye

    Kayıt:
    30 Eylül 2005
    Mesajlar:
    2,075
    Beğenilen Mesajlar:
    0
    Meslek:
    Coder, Bilgi İşlemci, Satınalma
    Şehir:
    Bursa, Türkiye


    Allah emeğini boşa çıkarmasın kardeşim.
     
  3. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Amin insallah. Suan 1 kucuk projr gelistirdim bu framework uzerinde. Amacim bundan sonra bu framework uzerinden gitmek. Ve paylasmak guzel bisey.
     
  4. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
  5. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Framework C++ ve PHP ile birlikte çalışmaktadır artık. Çekirdeğini c++ ya geçirmeye başladım.
    PHP 5.5.* sürümde net çalışmaktadır. Diğer sürümleri denemedim.

    Örnek

    PHP ile kodlanmış önceki router

    0.000058 - 0.000180 ortalama saniye işlemi yapıp veriyordu.

    C++ ile şimdi kodlanmış router bana

    0.000023 - 0.000060 ortalama saniye işlemi yapıp veriyor

    şuan router 3-4 kat hız farkı var.



    Installation

    Ubuntu

    $ sudo apt-get install php5-dev gcc make

    Suse

    sudo yast -i gcc make php5-devel

    CentOS/RedHat/Fedora

    sudo yum install php-devel gcc make
    [HR][/HR]
    $ cd build
    $ phpize && sudo ./configure --enable-smceframework && make && sudo make install && service apache2 restart
     
  6. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
  7. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
  8. Aristona

    Aristona Daimi Üye

    Kayıt:
    12 Eylül 2010
    Mesajlar:
    551
    Beğenilen Mesajlar:
    1
    Meslek:
    İşsiz
    Şehir:
    Narnia
    Koyduğunuz benchmarkta 30.000 defa non-2xx response kodu almışken nasıl production ready diyorsunuz anlamıyorum. Verbosity yi açın bir hata olmalı. Neden non-2xx response dönüyor)

    Anlamadığım nokta da, bir fonksiyon oluşturup onu bir sınıfa method olarak eklemeyi OOP olarak sanmanız.

    Random bir klasöre girdim ve random bir sınıfa tıkladım.

    Bu nedir?
    https://github.com/smceframework/fr...mework/core/SmPagination/SmPagination.php#L76

    OOP olmamasını geçtim, dediğiniz gibi MVC'de değil bu. HTML çıktısını bile model içerisinden veriyorsunuz.

    Ayrıca, o kadar çok dependencysi varki sınıfınızın:

    1. $_GET kullanımı zorunlu. E ben belki 1'den 100'e kadar 10'ar 10'ar paginate yapmak istiyorum birşeyi? URI üzerinde bir değer olması gerekli değil ki?
    2. Neden cssler orada? Neden .pagination mesela? Belki ben .pagination kullanmak istemiyorum? Kendim ayarlamak istiyorum css sınıflarını?

    Mesela, oradaki HTML çıktılarını başka bir sınıfa taşıyabilirsin:

    new \Smce\Pagination\Pagination(new \Smce\Pagination\Generators\DefaultGenerator())->html();
    new \Smce\Pagination\Pagination(new \Smce\Pagination\Generators\BootstrapGenerator())->html();

    Generatorleri bir interfaceye bağlarsın, isteyen o interfaceyi implement edip kendi generatorunu yazar? Belki HTML çıktısı bile istemiyor olabilirler. Jade isterler misal? O zaman Generator üzerine bir de Convertor desteği eklersin?

    Çoğunluk klasik CRUD işlemleri yapsa da (Bu arada bunu GRUD diye yazıyorsun, bilgin olsun doğrusu CRUD [eğer yeni bir terim üretmediysen]) çekirdeği geliştirirken çok yönlü düşünmek gerekiyor.

    Ek olarak, oradaki kodları yaklaşık 10 tane minik fonksiyona taşıyabilirsin. leftRight hesaplamaları vb. Bunları ufak methodlarla halletmek daha anlaşılır olmasını sağlar. Belki ben şuan kaçıncı sayfada olduğumu bulmak istiyorum? Veya previous butonu var mı onu öğrenmek istiyorum? Pagination sadece HTML output veren bir div değil.

    Mesela, şöyle bir yapı olsa:

    --Components\Pagination\Paginator.php
    --Components\Pagination\Decorators\BootstrapDecorator|SmceDecorator
    --Components\Pagination\Generators\HTMLGenerator|JadeGenerator|JsonGenerator
    --Components\Pagination\Converters\JadeConverter
    --Components\Pagination\Interfaces\GeneratorInterface|ConvertableInterface
    --Components\Pagination\...

    Bir diğer konu da, 0 test ile nasıl projeyi yürüteceksiniz. Ben şimdi sizin pagination sınıfınızı refactor edip PR atsam, uygulamanın stabil olup olmadığını nasıl anlayacaksınız? Zaten görünüşe bakılırsa technical debt olaylarına fazlasıyla girmişsiniz, uygulamanın birçok yerinin refactor edilmesi gerekiyor en basit testlerin bile yazılabilmesi için.

    Kişisel frameworkü ilk yazan siz değilsiniz, ama alternatiflere göre (ki bu frameworkler sizden çok iyi bir durumda olmasına rağmen tutmuyor ve tutmayacak - çünkü sebebi belli, kimse CI/Laravel/Phalcon çakması olan, dökümantasyonu bulunmayan, geleceği belirsiz frameworkleri kullanmıyor.) projeniz bana ümit vermiyor. Yeni birşey getirebiliyorsanız PHP dünyasına, herkes desteğini de verir, yardımcı da olur. Yapılmamış ufak bir kütüphanenin bile composer üzerinden sunulması PHP dünyası için büyük bir kazanç. Bu tür frameworklerin ise bir anlamı olmuyor, çünkü zbilyon tane PHP framework inceledim şuana kadar Github'da. Genelde öğrenme amaçlı yazıyor herkes. (Bu son derece iyi birşey ve şuana kadar muazzam emek vermişsin, tebrikler) Ceviz ile yazmıştı zamanında, ve ortaya CI çakması yarım yamalak bir proje çıkmıştı.

    C extensionu yazıp projenin birkaç mikrosaniye hızlandırılmasına gelince: bir amacı yok, gerçekten. Yazdığın uygulamayı ayda 10 milyar hit için scale etmen gerektiğinde hiçbir önemi olmuyor bunun. Veritabanından veri çekip ekrana bastırma işini PHP ile yaparsan 2 saniye, C extensionu ile yaparsan 1.990 saniye oluyor. 1.980 saniye veritabanına bağlan/veri al/bağlantıyı kapat işlemleriyle uğraştığın için. Bu yüzden bir amacı kalmıyor. Gerçekten C-level performans gereklidir, o zaman PHP kullanarak yanlış bir aracı seçiyorsunuz ve baştan yanlış yapıyorsunuz.

    2015 yılında "Tekerleği buldum, bakın!" demek yerine, halihazırdaki tekerlekleri geliştirmek için çalışırsan çok daha yararlı bir iş yapmış olursun.

    Laravel falan çok mu iyi, hayır. Taylor Otwell zaten yanlış hatırlamıyorsam ASP.NET kökenli. PHP'ye RoR'u getirmeye çalıştı. Laravel 3 çöptü (statik methodlar vb.) ama PHP dünyasına yeni birşey getirmişti ve kabul gördü. Şuan senin geliştirdiğin framework bize yeni bir özellik sunmuyor.

    Ama şunu yapsan: o pagination sınıfını dediğim hale getirsen, son derece muazzam bir pagination çıkarsan ortaya, Laravel|Symfony vb. kendi pagination komponentini yazmak yerine senin komponentini alıp kullansa? Yapılmışı var mesela, Monolog. Amacı ne? Log tutmak. Bu. Ama adamlar her ihtiyaca göre geliştirmişler bunu, bu yüzden şuan kimse Log sınıfı yazmakla uğraşmıyor.

    Aslansın-kralsın diyenlere bakma. Eminim kimse kullanmayacak. Eminim kimse "Wow, Türk'ler neler yapmış!" demeyecek. Yorum yapanların açıp kodlara baktığından bile şüpheliyim. (Kesinlikle kötü değil çünkü framework gibi çok komplex bir projeyi bile production ready diyebileceğin bir seviyeye getirmişsin - ama çirkin. Çirkinden kastım, o pagination sınıfından o HTML bölümünü kaldırsak, o sınıfın pagination yaptığını anlamak için 30dk o koca fonksiyonun ne yaptığına bakıp anlamaya çalışmamın gerekmesi) Söylediklerimi incitmek için yazmıyorum, lütfen yanlış anlama. Github'da tonla Türk var 1k üzeri star alan projelerine. Kaçının adı biliniyor?

    Takdire şayan nokta ise, bu denli büyük bir projeyi bu hale getirebilmişsin sıkılmadan. Hobi amaçlı bir proje geliştirip, onu bu seviyeye getirmek seni diğer yazılımcılarım birkaç ışık yılı önüne atar daima.

    Ps. Geliştirirken başka frameworklerden esinlendinmi? Biraz CI havası var.
     
  9. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    üste 2 teste yanlış test.
    ilginçtir

    ab -kc 10 -t 30 http://localhost/micro
    yazdığım localhostu görmüyor. yerine ipden ulaştığında çalışıyor.

    --- Ekleme ---

    Yolu hatalı göstermişiz. Bu arada aradan bayagı zaman geçti. şuanki framework eskiyle arasında bayagı fark var.
    Yolu tam belirtmek gerekiyormus localhosta. ci ve smce aynı hello world denemesi.

    codeigniter testi 28.187 seconds
    ab -c 100 -n 30000 http://localhost/ci/index.php
    Kod:
    This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 3000 requests
    Completed 6000 requests
    Completed 9000 requests
    Completed 12000 requests
    Completed 15000 requests
    Completed 18000 requests
    Completed 21000 requests
    Completed 24000 requests
    Completed 27000 requests
    Completed 30000 requests
    Finished 30000 requests
    
    
    Server Software:        Apache/2.4.7
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /ci/index.php
    Document Length:        764 bytes
    
    Concurrency Level:      100
    Time taken for tests:   28.187 seconds
    Complete requests:      30000
    Failed requests:        0
    Total transferred:      29250000 bytes
    HTML transferred:       22920000 bytes
    Requests per second:    1064.33 [#/sec] (mean)
    Time per request:       93.956 [ms] (mean)
    Time per request:       0.940 [ms] (mean, across all concurrent requests)
    Transfer rate:          1013.40 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.3      0       6
    Processing:     1   94  25.6     92     842
    Waiting:        1   91  24.0     89     840
    Total:          1   94  25.5     92     842
    
    Percentage of the requests served within a certain time (ms)
      50%     92
      66%     97
      75%     99
      80%    101
      90%    107
      95%    112
      98%    122
      99%    142
     100%    842 (longest request)
    

    smceframework C testi
    26.060 seconds
    ab -c 100 -n 30000 http://localhost/smce/index.php

    Kod:
    This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, [URL]http://www.zeustech.net/[/URL]
    Licensed to The Apache Software Foundation, [URL]http://www.apache.org/[/URL]
    
    Benchmarking localhost (be patient)
    Completed 3000 requests
    Completed 6000 requests
    Completed 9000 requests
    Completed 12000 requests
    Completed 15000 requests
    Completed 18000 requests
    Completed 21000 requests
    Completed 24000 requests
    Completed 27000 requests
    Completed 30000 requests
    Finished 30000 requests
    
    
    Server Software:        Apache/2.4.7
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /smce/index.php
    Document Length:        764 bytes
    
    Concurrency Level:      100
    Time taken for tests:   26.060 seconds
    Complete requests:      30000
    Failed requests:        0
    Total transferred:      35100000 bytes
    HTML transferred:       22920000 bytes
    Requests per second:    1151.21 [#/sec] (mean)
    Time per request:       86.865 [ms] (mean)
    Time per request:       0.869 [ms] (mean, across all concurrent requests)
    Transfer rate:          1315.35 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.3      0       5
    Processing:     1   87  26.9     84     507
    Waiting:        1   73  25.6     70     478
    Total:          1   87  26.9     84     507
    
    Percentage of the requests served within a certain time (ms)
      50%     84
      66%     89
      75%     92
      80%     93
      90%    100
      95%    106
      98%    180
      99%    227
     100%    507 (longest request)
    
    
    smceframeworkonlyphp testi 29.413 seconds
    ab -c 100 -n 30000 http://localhost/smce/index.php

    Kod:
    This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 3000 requests
    Completed 6000 requests
    Completed 9000 requests
    Completed 12000 requests
    Completed 15000 requests
    Completed 18000 requests
    Completed 21000 requests
    Completed 24000 requests
    Completed 27000 requests
    Completed 30000 requests
    Finished 30000 requests
    
    
    Server Software:        Apache/2.4.7
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /smce/index.php
    Document Length:        764 bytes
    
    Concurrency Level:      100
    Time taken for tests:   29.413 seconds
    Complete requests:      30000
    Failed requests:        0
    Total transferred:      35100000 bytes
    HTML transferred:       22920000 bytes
    Requests per second:    1019.96 [#/sec] (mean)
    Time per request:       98.043 [ms] (mean)
    Time per request:       0.980 [ms] (mean, across all concurrent requests)
    Transfer rate:          1165.38 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.3      0      16
    Processing:     3   98  45.5     92    1199
    Waiting:        2   81  45.2     76    1199
    Total:          3   98  45.5     92    1199
    
    Percentage of the requests served within a certain time (ms)
      50%     92
      66%     95
      75%     97
      80%     99
      90%    104
      95%    113
      98%    229
      99%    283
     100%   1199 (longest request)
    
    
    
    --- Ekleme ---

    https://github.com/smceframework/projects
    /app/assets içinde pagination css oluşlturulmakta. istedğinizi değiştirebilirsiniz.


    evet dediğiniz doğru olabilir. Yapılabilinir.

    evet Kelimeyi Grud olarak daha önce birkaç yerde gördüğümde dolayı aklımda kalmış o hatayı düzelttim. https://github.com/smceframework/framework/tree/master/smceframework/core/SmCrud


    projeyi unit test ve travis.ci ye bağlamıy düşünüyorum vakit bulabilirsek. Şuan frameworkü daha çok hobi olarak geliştiriyorum. Daha çok diğer projelerle uğraş veriyorum.

    Dökümantosyon yavaş yavaş hazırlanıyor. Milletin kullanıp kullanması çok önem arz etmiyor. Amacım da daha çok geliştirip kendi çatımı kurmak. Eğerki kullananlar olursa birlikte geliştirmek istemek.

    evet doğru söylüyorsun pagination geliştirilmeli. pagination html kısmı projeci içine alınabilir.
    CI değil, Yii havası var diyelim. Bu havayı değiştirmeye çalışıyorum.

    --- Ekleme ---

    birde paginationu url den get ile yapma düşüncem. google index için www.site.com/?page=1 www.site.com/?page=2 linklere tıklarken hangi konumda belirtmesi.

    --- Ekleme ---

    Phalconun sistesinden aldım. Bendeki makine EC2 nin en düşül bilgisayarı. Şartlar tüm frameworkler için aynı sonuçta

    http://docs.phalconphp.com/en/latest/reference/benchmark/hello-world.html

    Yii 1.1.* Requests per second: 851.76


    ab -n 2000 -c 10 http://localhost/yii/index.php
    Kod:
    This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 200 requests
    Completed 400 requests
    Completed 600 requests
    Completed 800 requests
    Completed 1000 requests
    Completed 1200 requests
    Completed 1400 requests
    Completed 1600 requests
    Completed 1800 requests
    Completed 2000 requests
    Finished 2000 requests
    
    
    Server Software:        Apache/2.4.7
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /yii/index.php
    Document Length:        764 bytes
    
    Concurrency Level:      10
    Time taken for tests:   2.348 seconds
    Complete requests:      2000
    Failed requests:        0
    Total transferred:      1950000 bytes
    HTML transferred:       1528000 bytes
    Requests per second:    851.76 [#/sec] (mean)
    Time per request:       11.740 [ms] (mean)
    Time per request:       1.174 [ms] (mean, across all concurrent requests)
    Transfer rate:          811.01 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.2      0       3
    Processing:     2   12   1.8     12      35
    Waiting:        0   10   1.7     10      29
    Total:          3   12   1.8     12      35
    
    Percentage of the requests served within a certain time (ms)
      50%     12
      66%     12
      75%     13
      80%     13
      90%     14
      95%     14
      98%     15
      99%     16
     100%     35 (longest request)
    
    CodeIgniter-2.2-stable Requests per second: 1201.28
    ab -n 2000 -c 10 http://localhost/ci/index.php
    Kod:
    This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 200 requests
    Completed 400 requests
    Completed 600 requests
    Completed 800 requests
    Completed 1000 requests
    Completed 1200 requests
    Completed 1400 requests
    Completed 1600 requests
    Completed 1800 requests
    Completed 2000 requests
    Finished 2000 requests
    
    
    Server Software:        Apache/2.4.7
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /ci/index.php
    Document Length:        764 bytes
    
    Concurrency Level:      10
    Time taken for tests:   1.665 seconds
    Complete requests:      2000
    Failed requests:        0
    Total transferred:      1950000 bytes
    HTML transferred:       1528000 bytes
    Requests per second:    1201.28 [#/sec] (mean)
    Time per request:       8.324 [ms] (mean)
    Time per request:       0.832 [ms] (mean, across all concurrent requests)
    Transfer rate:          1143.80 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.5      0       7
    Processing:     1    8   2.0      8      54
    Waiting:        1    8   2.0      8      53
    Total:          1    8   2.3      8      61
    
    Percentage of the requests served within a certain time (ms)
      50%      8
      66%      9
      75%      9
      80%      9
      90%     10
      95%     10
      98%     12
      99%     14
     100%     61 (longest request)
    Smce C 1.0.1 Requests per second: 1415.41
    ab -n 2000 -c 10 http://localhost/smce/index.php
    Kod:
    This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 200 requests
    Completed 400 requests
    Completed 600 requests
    Completed 800 requests
    Completed 1000 requests
    Completed 1200 requests
    Completed 1400 requests
    Completed 1600 requests
    Completed 1800 requests
    Completed 2000 requests
    Finished 2000 requests
    
    
    Server Software:        Apache/2.4.7
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /smce/index.php
    Document Length:        764 bytes
    
    Concurrency Level:      10
    Time taken for tests:   1.413 seconds
    Complete requests:      2000
    Failed requests:        0
    Total transferred:      2340000 bytes
    HTML transferred:       1528000 bytes
    Requests per second:    1415.41 [#/sec] (mean)
    Time per request:       7.065 [ms] (mean)
    Time per request:       0.707 [ms] (mean, across all concurrent requests)
    Transfer rate:          1617.21 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.4      0       6
    Processing:     2    7   2.2      7      32
    Waiting:        2    6   2.2      6      31
    Total:          2    7   2.5      7      38
    
    Percentage of the requests served within a certain time (ms)
      50%      7
      66%      8
      75%      8
      80%      8
      90%      8
      95%      9
      98%     11
      99%     11
     100%     38 (longest request)
    
    SmceOnlyPHP 1.0.1 Requests per second: 1326.36
    ab -n 2000 -c 10 http://localhost/smce/index.php
    Kod:
    This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 200 requests
    Completed 400 requests
    Completed 600 requests
    Completed 800 requests
    Completed 1000 requests
    Completed 1200 requests
    Completed 1400 requests
    Completed 1600 requests
    Completed 1800 requests
    Completed 2000 requests
    Finished 2000 requests
    
    
    Server Software:        Apache/2.4.7
    Server Hostname:        localhost
    Server Port:            80
    
    Document Path:          /smce/index.php
    Document Length:        764 bytes
    
    Concurrency Level:      10
    Time taken for tests:   1.508 seconds
    Complete requests:      2000
    Failed requests:        0
    Total transferred:      2340000 bytes
    HTML transferred:       1528000 bytes
    Requests per second:    1326.36 [#/sec] (mean)
    Time per request:       7.539 [ms] (mean)
    Time per request:       0.754 [ms] (mean, across all concurrent requests)
    Transfer rate:          1515.47 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.2      0       3
    Processing:     1    7   1.2      7      41
    Waiting:        0    7   1.2      7      41
    Total:          2    8   1.2      7      41
    
    Percentage of the requests served within a certain time (ms)
      50%      7
      66%      8
      75%      8
      80%      8
      90%      9
      95%      9
      98%     10
      99%     11
     100%     41 (longest request)
    
    [​IMG]

    --- Ekleme ---

    Testler hepsi
    Document Length: 764 bytes
    'dir şartlar eşit

    --- Ekleme ---


    ve biraz daha

    [​IMG]

    nasıl test edileceği var burada.

    http://docs.phalconphp.com/en/latest/reference/benchmark/hello-world.html

    --- Ekleme ---

    Framework hızlandıracak değişikler yaptım. Ve tüm frameworklere, debuglar kapalı 11 Byte Testi uyguladım. Sizde apachebenchmark kurarak yapabilirsiniz.

    Diğer 2 Frameworkten 2.4 kat Hız farkı var.

    http://www.smceframework.com/tr/pages/show/12/hiz-testi

    --- Ekleme ---

    Framework hızlandıracak değişikler yaptım. Ve tüm frameworklere, debuglar kapalı 11 Byte Testi uyguladım. Sizde apachebenchmark kurarak yapabilirsiniz.

    Diğer 2 Frameworkten 2.4 kat Hız farkı var.

    http://www.smceframework.com/tr/pages/show/12/hiz-testi
     
  10. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
  11. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
  12. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
    Siz bu benchmark'ları veriyorsunuz da, kıyasladığınız frameworklerdeki tüm özelliklere sahip mi Smce? Yani Laravel bir request'i handle ederken kaç kontrol noktası atlatıyor, neler sağlıyor; işlevsellik sunmak adına mı vazgeçiyor açılış hızından yoksa sizinle aynı işleri daha yavaş mı yapıyor? Bunları dikkate almak lazım bence. Kıyasladığınız frameworklerle denk olduğunu düşünmüyorum Smce'nin. Şu an belki micro frameworklerle kıyaslayabilirsiniz bence.
     
  13. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Smce tabiki diğer frameworklere eksikleri var. Ama yapılan test debug vs şeyler kapalı 11 byte testi. Oradan tüm çıktıları 11 byte olarak görebiliriz. Şuana kadar bencmark testlerle bu noktaya ulaştım. bir function ile static function arasında gerçekten kat kat hız farkı oluşuyor. Bunu console programcıları iyi bilirler pointer olarak. Nerelerde ne kullanmak gerektiğini bu bencmark testleriyle ilerledim. Dahada hızlandırmak için uğraşıyorum. Amaç hiç bir kullanmıyacak nesneyi boş yere load etmemek. Laravelde, yii de zend farketmez bana action içine girene kadar istemediğim işlevleri yüklüyorsa gereksizler. Daha önce kullanmadım ama, bldiğim kadarıyla laravel örnek helperini on load yapıyor diye biliyorum. bunları class vasıtasıyla load ettirmek daha dogru bence.

    PHP:
    array_add($array'key''value');
    bunu

    PHP:
    use laravel/L;

    L::array_add($array'key''value');
    Yaparsa daha iyi olmazmı?

    her include edilen dosya sistemi gereksizce yavaşlatıyor. Amazon, facebook gibi büyük şirketler hız için savaşırken. Kullanmıyacak include 'yi bile tartışmak gerekiyor.

    --- Ekleme ---

    örnek vermek gerekirse
    SmHelper ve SmController yüklenmeden çalışmıyor. Bunun gibi kullandıgınız frameworklerde bir çok şey load ediliyor olabilir.

    PHP:
    <?php

    use Smce\Core\SmController;
    use 
    Smce\Core\SmHelper as s;

    class 
    HelperController extends SmController
    {

        public 
    $layout='//layouts/column2';


        public function 
    actionArrayfirst()
        {
            
    $array=array(10020012033668024730018590125140);

            echo 
    s::array_first(function($x){
                return 
    $x 200;
            },
    $array);

        }
        
        public function 
    actionArraylast()
        {
            
    $array=array(10020012033668024730018590125140);

            echo 
    s::array_last(function($x){
                return 
    $x 200;
            },
    $array);

        }
        
        
        public function 
    actionArraysort()
        {
            
    $array = array(
                array(
    'name' => 'Foo'),
                array(
    'name' => 'Soo'),
                array(
    'name' => 'Coo'),
            );
            
            
    $arr=s::array_sort(function($value)
            {
                return 
    $value['name'];
            },
    $array);

            echo 
    "<pre>";
            
    print_r($arr);
            
        }
        
        
        
    }
     
  14. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,140
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    ceida..bak aklıma ne geldi..burdan yaziyim sana..

    PHP:

    echo getSqlTable::sql("table","fields")->where()->order()->ext();

    böyle bir şeyde..çat diye bootstrap table icinde...sql table yapcak..auto complete araması icinde olacak...düzenleme silme iconlarını dahil etcek ve pop up pencere ile otomatik düzenleme silme yapcak..hiç uğraşmıcaz..hatta pagination yapacak..ajax yada post parametresini secenege bağlı olacak...

    ahaha..kanına gireyimde yaparsın belki :)
     
  15. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    bunu genişletmek gerek dostum biraz :D


    Örnek Yii framework bunu güzel yapmış. Aşağıdaki sistem genişletebiliniyor.

    PHP:
    $this->widget('zii.widgets.grid.CGridView', array(
        
    'dataProvider'=>$dataProvider,
        
    'columns'=>array(
            
    'title',          // display the 'title' attribute
            
    'category.name',  // display the 'name' attribute of the 'category' relation
            
    'content:html',   // display the 'content' attribute as purified HTML
            
    array(            // display 'create_time' using an expression
                
    'name'=>'create_time',
                
    'value'=>'date("M j, Y", $data->create_time)',
            ),
            array(            
    // display 'author.username' using an expression
                
    'name'=>'authorName',
                
    'value'=>'$data->author->username',
            ),
            array(            
    // display a column with "view", "update" and "delete" buttons
                
    'class'=>'CButtonColumn',
            ),
        ),
    ));
     
  16. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,140
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    yii yi daha bir kere bile kullanmadım...o yüzden bilemicem...sen yap on numara kullanırım seninkini :)
     
  17. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    datagridimiz yok suan. ama yapacaz şuan DataTablejquery ile idare et :D
     
  18. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    bir bancmarkta herkese adil davranılmalı. Document lenght eşit, debug vs kapalı olmalı.
    http://www.ruilog.com/blog/view/b6f0e42cf705.htmlİyi bir test diyebiliriz. Burada 5. Number of function calls (Facebook XHProf) bu kısma bakarsanız bir "Hello world" sayfasında kaçtane fonksyion çağrıldıgını göreceksiniz. Zend 'e bak abi 5620 oha diyebiliriz. Bir hello world yaparken ne yüklüyorsun bana ne kullanacam. Kendisi bu ve diğer testlerin en yavaşı. Buralardan loadları görebilirsiniz arkadaşlar. Kullandıığınız frameworkleri çok iyi görmeyin. Siz kulandıgınız için gözünüz iyi geliyor. Tmm ben Smce çok iyi demiyorum ama olabilir, daha iler geliştirebilir. Bir yukardaki arkadaşın bahsettiği kısımlar yapılabilinir zamanla. En azından bencmark testi yaparak ilerliyorum bu şekilde. Örnek; Bir otomobil şirketi, otomobilini crash testine sokar, bunun gibi bişey.
     
  19. ersink

    ersink Daimi Üye

    Kayıt:
    26 Temmuz 2010
    Mesajlar:
    906
    Beğenilen Mesajlar:
    5
    Meslek:
    Med Student
    Şehir:
    Ankara
    Yeni programlama yaklaşımlarının getirdiği şeyler bunlar, o fonksiyonların hepsi doğrudan işlev yapmıyor zaten. Geliştiriciye, kullanıcıya kullanımı pratik, geliştirmesi kolay, test etmesi kolay, modüler bir çatı sunuyor. Basit bi' CRUD resource için kaç tane class yazdım mesela. Model, Controller, Request, Repository, Exceptions, bunların interfaceleri vs. Yani bunlar performansa etki ediyor olabilir ama kesinlikle gereksiz diyemezsiniz, kabul etmiyorum bu görüşü. Smce'yi yazarken OOP patternlerini önemsiyor musunuz mesela? Kodları incelemedim, o yüzden soruyorum.
     
  20. ceida

    ceida Üye

    Kayıt:
    9 Ekim 2008
    Mesajlar:
    239
    Beğenilen Mesajlar:
    0
    Smcede crud,mvc zaten bunlar var, bunlar gereksiz demiyorum olması gerekenler.. Bunların tamamiyle autoloading olarak çağrılmasını söylüyorum, paldır küldür her nesneyi direk include edilmez. Smce yi yazarken app kulancı tarafını epey özen gösterdim. Framework tarafı biraz ele alınmalı. PSR genel olarak dikkat ediyorum. en önemlisi psr-0 işte autoloadingten geçmeli her nesne bundan bahsediyorum.

    --- Ekleme ---

    Smce'de kiler.


    • MVC
    • PSR
    • Autoload
    • Session Management
    • Assets Manager
    • Temp Manager
    • Validation
    • Masterpage/Layout
    • Template Engine
    • CRUD
    • Smce Command Line
    • ORM ActiveRecord(MySQL, SQLite, PostgreSQL, Oracle)
    • Using ActiveRecord on Multiple Databases
    • Accses Control Lists (ACL)
    • Debug
    • Logger
    • Router
    • Use SSH to Connect to a Remote Server (SSH,FTP)
    • Using multiple ssh and ftp over SSH
    • Exception Class
    • Zip Encoding Class
    • User Agent Class
    • Pagination Class
    • Output Class
    • MemCache Class
    • Redis Class
    • Migration Class
    • Helper Class - Enriched With Anonymous Closure Functions
    • Http Exceptions Capture (404, 403 .. vs Page)
    • Widgets

    --- Ekleme ---

    Çevirilerde eşim yardım etmeye çalışıyor, türkçe sayfada dökümantsyonunu ilerletmeye çalışıyorum :) ingilizce yeterli değil bendeki.