Wednesday, June 6, 2012

Ruby is faster than Python, PHP, and Perl

There's a pervasive myth that Ruby is slow, and moreover, that it's the slowest language in popular use. Everyone knows Ruby is slow. Right? Who would possibly disagree that Ruby is slow? Here's an example IRC discussion on freenode's #postgres which happened just yesterday:

16:57 sobel: i can't find it now, but arstechnica benched all the popular dynamic languages
16:58 sobel: using C/C++ as the standard (1.0) they ranked other languages as multiples of C/C++ performance
16:58 sobel: java was a 2
16:58 sobel: twice as slow as C. and it was the winner, head and shoulders above the rest
16:58 sobel: i think Erlang placed somewhat favorably
16:59 sobel: python/perl were near the middle, at something like 25-35x slower than C
16:59 sobel: Ruby: a full 72x slower than C

Ruby loses against invisible Ars Technica benchmarks in the sky with unknown URLs! 72x slower than C! Over twice as slow as Python and Perl!

Fortunately, we don't have to rely on some one-off benchmark Ars Technica may or may not have done at some indeterminate point in time whose URL cannot be located offhand, because there's a site with a fairly decent reputation which provides ongoing benchmarks across multiple programming languages using implementations submitted by fans of said language. It's been around for awhile and is relatively well-trusted.

That site is the Programming Languages Shootout, and unlike the alleged Ars Technica benchmark, you can actually visit their web site at shootout.alioth.debian.org. What do they have to say about programming language performance?


According to this benchmark suite, JRuby is 34.5 times slower than (not C, not C++, but) Fortran. Ruby 1.9 (MRI/YARV) is 43.80 times slower than (not C, not C++, but) Fortran. Both JRuby and Ruby 1.9 beat Python, PHP, and Perl by a considerable margin. The nearest competitor is Python 3, at 47.93 times slower than (not C, not C++, but) Fortran. By the way, did I mention that the fastest language on their benchmark is... not C... not C++, but Fortran? (nothing personal sobel, but unsubstantiated hearsay is bad!)

Yes, that's right folks: according to the Programming Languages Shootout, Python, PHP, and Perl are all slower than Ruby. Did you think Ruby was slower than Python? Guess what, you're wrong. Ruby used to be one of the slowest popular languages, but that has changed. Ruby performance has advanced considerably over the years, so if you're still repeating some offhand information you may or may not have gotten from Ars Technica at some point but can't find the link to as your metric of Ruby performance, you may want to try again, and find modern, relevant information you can actually get a link to.

There are many future VM improvements in the pipe for Ruby, Python, and PHP (and I guess Perl users might continue dreaming of a Parrot-powered Perl 6). Rubyists can look forward to the upcoming JRuby 1.7 release which features InvokeDynamic support and allows for Java-speed method dispatch... in Ruby. InvokeDynamic is a game changer for the JVM in general, and it's a game changer for Ruby, because InvokeDynamic makes JRuby dispatch potentially as fast as Java.

Python users can look forward to PyPy, which is posting some incredibly impressive numbers, especially around numerical computing. Python users can also look forward to resumed work on Jython, which is adding InvokeDynamic support which can potentially make Python as fast as Java. Finally, PHP users can look forward to the HipHop VM developed at Facebook, which will provide much improved performance for PHP. These are all great projects, but none of them are really ready for general consumption yet (including JRuby 1.7).

All that said, the Programming Language Shootout doesn't include any of these unreleased development versions in the benchmarks you see when you visit their site. They show the numbers for the latest production releases, and those numbers show Ruby is faster than Python, PHP, and Perl.

The game has changed: you just weren't paying attention.

Last but not least, if you've seen some benchmark somewhere, even if you have an eidetic memory and remember but the numbers were, but can't even dredge up a link to it, please, please, don't quote said benchmark, even if you have an eidetic memory and remember what the numbers were.

For benchmarks to be remotely scientific, they must be both reproducible and falsifiable, and hopefully in addition to both those things they have a good methodology. If you can't even dredge up a link to the benchmark in question, please don't go quoting numbers off the top of your head to people who might be influenced by them.

Let's advance computer science beyond the state of witch doctors telling people to bleed themselves with leeches because at some point someone said they might make you feel better maybe.

64 comments:

Jon Eisen said...

Comparing Python to Ruby directly, we see this chart: Python vs. Ruby. You can see that they are on the same order of magnitude, and to say that one is faster than the other is an illusion. They operate at the same speed when averaged over many different types of tasks.

bellyfullofrage said...

When Ruby is slow it's over 5X slower than it's median time. So the critical question would seem to be, how representative is the median timing of this test of real world use? C++ is always fast. PHP, at it's slowest, is only 2X slower than it's median timings. If the real world performance tends more toward the slower end then Ruby is slow.

Unknown said...

JavaScript v2: 2.85
That means, your Browser is at least 12x faster then your webserver.

MareizioBlog said...

Let's move to Fortran!!!

Will Buck said...

Think it's a little unfair that the x86 architecture was cherry-picked of the four results sets to prove your point :/ on x64 quad-core, it was actually the slowest of all.

That's nit-picking, though, in general my opinion on this piece is that amongst the dynamic languages, these results mostly make the point that they all perform pretty similarly, and picking between them should probably be a choice more of team preference and library support for the target tasks. If performance is of the most supreme importance, the right choice between all those listed is none of them :)

djur said...

I can't comment on the other languages' shootout implementations, but last time I checked some of the Ruby ones were astonishingly inept. I honestly wouldn't trust the aggregate rankings of the Shootout at all.

I mean, I don't even know where to start in figuring out if this is efficiently implemented, but just look at it!

http://shootout.alioth.debian.org/u64q/benchmark.php?test=meteor&lang=jruby

Also, the shootout scripts were overhauled at some point. They used to be more general, and now they're much more focused on computation. That's part of why Fortran (which is optimized for mathematics) gets first place.

I do agree that the conventional wisdom that Ruby is the slowest of the 'big four' (Perl, Python, PHP, Ruby) is unjustified.

Isaac Gouy said...

@djur I don't even know where to start in figuring out if this is efficiently implemented
In that case we really don't need to bother about what you think of that program ;-)

@djur They used to be more general, and now they're much more focused on computation.
I don't think you know that.

@djur ...why Fortran...
Because a good Fortran programmer wrote some programs, and perhaps because that's a good compiler.

Isaac Gouy said...

@Jon Eisen -- here's the direct Ruby1.9 :: Python3 comparison

j2kun said...

The real story: all of the good functional programming languages (which are way more expressive than scripting languages anyway) are 10-15 times faster than the scripting languages.

How do you like them apples?

Isaac Gouy said...

@bellyfullofrage -- Well done! (For actually thinking through what those numbers might mean.)

Isaac Gouy said...

@Will Buck -- You're letting Tony off too easily.

It's very important to acknowledge that program performance is likely to different when we run the same programs on x64 rather than x86, and when we have 4 cores available rather than one core, and ...

Isaac Gouy said...

@Tony That site is the Programming Languages Shootout...

No, it isn't.

(And it hasn't been for 5 years.)

Tony said...

@Isaac Gouy You want to talk about the multicore performance of Ruby versus Python? The "standard" interpreters for each of these languages have a GIL and thus don't support multicore.

Multicore only really matters for JRuby, Rubinius, and Jython, as these implementations do not have a GIL and can thus leverage multicore with a single virtual machine.

Isaac Gouy said...

@Tony -- Here's a Python3 program that leverages 4 cores.

djur said...

@Isaac Gouy I was referring to the fact that the style is a mess and the author refers to himself as a "Ruby novice". I find the Python version of that test easier to read, and I've been using Ruby almost 10 years longer than Python.

If that's your code and I hurt your feelings, I sincerely apologize.

And yes, the shootout was formerly more generalized. I recall many more micro-benchmarks on things like object instantiation, recursion, function calls, data structures, etc.

John said...

I'm going to wait for Fivetran.

Isaac Gouy said...

@djur If that's your code and I hurt your feelings, I sincerely apologize.

You've already refered to the program author, so you know that isn't my name.


@djur And yes, the shootout was formerly more generalized. I recall many more micro-benchmarks on things like object instantiation, recursion, function calls, data structures, etc.

Back in 2005! (Whatever had been inherited from Doug Bagley's abandoned 2002 code base.)

Things like method calls and object instantion are not more general -- they are specific to a particular style of programming.

Things like ackermann and fibonacci and nested loops make the current tiny tiny programs seem like major exercises in software engineering!

Carter Shanklin said...

Lies. Damned lies. Statistics. And then whatever this is. Kids, if you can write it in Fortran, chances are you don't do it.

s said...

One comparison which was done in 2008: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/

Notice the author clear says that this is only: "Implementing an identical object oriented solution to the Josephus Problem(...) and measuring the performance results thereof."

Tony said...

@Isaac Gouy Here's a Node.js fibonacci server that will light up all your cores: https://gist.github.com/2018811

Spinning up a separate interpreter per CPU core adds an awful lot of complexity though...

Isaac Gouy said...

@Carter Shanklin

"After all, facts are facts, and although we may quote one to another with a chuckle the words of the Wise Statesman, 'Lies--damned lies--and statistics,' still there are some easy figures the simplest must understand, and the astutest cannot wriggle out of."

Leonard Henry Courtney, 1895

Brittle Bones said...

While Ruby 1.9 got increased performance as seen in the benchmarks, I was more interested in the Lua, Go and C# numbers. Is sad C# haven't got much attention in the open source (outside Windows) world while having numbers like those.

camel7k said...
This comment has been removed by the author.
camel7k said...

Perl, Python, Ruby, PHP, C, C++, Lua, tcl, javascript and Java comparison

See http://raid6.com.au/~onlyjob/posts/arena/

dguaraglia said...

I'd be curious to know how Python 2.x fares in this benchmark. I have no idea whether it's faster or slower than Python 3.x, but 2.x is what I use most of the time.

Isaac Gouy said...

@dguaraglia -- I'd be curious to know how Python 2.x fares in this benchmark.

Pretty much the same, The Wayback Machine has this snapshot from 2010

Isaac Gouy said...

@camel7k -- Is that a comparison of single byte ascii strings against double byte Unicode strings?

Unknown said...

In all cases if any of these languages were to make a change where my programming time was cut in half in exchange for their execution speed being quadrupled, I'd welcome it!

as someone else mentioned they all run great.,

Антон Устюжанин said...

Yes, Ruby is pretty fast, considering how dynamic and powerful it is, but it may just be too powerful.
From what I've seen, Ruby developers very often tend to value inner library code beauty and nice outer API design over performance.
Look at Cucumber for example, that is a two layers of DSL over regular Ruby code.
People actually construct damn fat classes in runtime based on results of introspection ( that is slow ), nifty DSL's ( they are slow too ) and, of course, then they use string manipulation to build code, and later eval it.
Also, things like long inheritance trees and breaking up code in modules make method lookup more complex, and if that is not bad enough, people use method_missing a lot, and blocks are everywhere.
In the end, this gives us just insane Rails startup times, and people go around "Bundler so slow!".
So while Ruby can be fast ( if you pay a lot of attention to optimizing the code ), most Ruby libraries are slow.
And you will probably end up using them.

Fisa said...

@ahtoh: +100

That's a far more realistic analysis than just running over-optimized tiny bits of code.

Bill Blondeau said...

@anton: oh hell yes. Nicely stated.

Benchmark squabbles tend to sound like the obsessions of medieval scholasticists, discussed with the wit and intellectual discipline of Redditors.

"38 Python programmers can dance on the head of a pin!"

"43 JRuby programmers can dance on the head of a pin!"

"Not fair! Two of them only had one leg, so their footprint was smaller!"

"lol pogo"

"Oh, so what about the PHP chick in a wheelchair, are we going to be ableist and exclude her too? Jerk"

"You know, Haskell is wheelchair-optimized. Any PHP v. Haskell wheelchair pindance benchmarks out there?"

"Hey, the C# people totally cheat on their pindance benchmarks because the Macarena is not real dancing!

"Lua is best for capoeira dance-off"

"What about line dancing? Lisp totally wins line dancing."

"Only if you've got Moebius pinheads, which nobody uses in production."

"Band name! Moebius Pinheads FTW"

...and so on.

More seriously, anton describes a far more realistic approach. I'd bet that well over 90% of real-world web apps would operate acceptably irrespective of the chosen language.

Web App performance bottlenecks ordinarily don't become significant unless the app is scaling to large transactional volumes, or the developers did some seriously faulty designs. In my experience, faulty design is highly portable. :-)

Isaac Gouy said...

@Bill Blondeau >>I'd bet that well over 90% of real-world web apps...<<

I'd bet that you know nothing at all about well over 90% of real-world apps :-)

@Bill Blondeau >>Web App performance bottlenecks ordinarily don't become significant unless...<<

Tautology -- Performance bottlenecks aren't significant unless they're significant.

karatedog said...

@Unknown: "where my programming time was cut in half".
Very true.

I'm a project manager, so on a certain level I think of developers and servers as costs.
When the decision is about to hire Java developers for 2X in money or PHP/Ruby devs for X and if I can buy a HP DL360G7 with 2 CPUs (that is 8 cores at least, but can be 16) from 10 days of a PHP/Ruby developer's cost, what will I choose if the project has about 80 developer days?
The PHP/Ruby one. When slow means "it cannot handle too many requests" then I don't care an inch if it is relatively slow. I'll just buy more servers.

3-5 years later - when I trash the servers - the next ones I buy will have ~24 cores, consume less power, and cost the same.

Isaac Gouy said...

@Tony >>ongoing benchmarks across multiple programming languages using implementations submitted by fans of said language<<

Tony, please try your hand at writing better Ruby programs and contribute them to the benchmarks game! ;-)

Suraj Tamang said...

I think I am going with Scala :)

Isaac Gouy said...

Rubyists can look forward to the upcoming JRuby 1.7 release which features InvokeDynamic support and allows for Java-speed method dispatch... in Ruby.

@Tony -- Here are jruby-1.7.0.preview2 measurements with invokedynamic=true

Matthew Newton said...

Ruby is actually right in line with its comparable languages (Python, PHP, Perl...). See http://blog.mnewton.com/post/30542907442/ruby-is-slow-but-the-its-same-speed-as-comparable

Kevin McCaughey said...

Well said Tony! I get so sick of people belching numbers and crowing. I much prefer the evidence, even if it didn't say Ruby was fast.

Sometimes it's like "My Dad would beat your Dad in a fight any day!" playground mentality.

In any case, I don't use my language of choice because it's fast, but because it gets the specific job I want done, done, and does it well. The fact that it is a pleasure to write (and think) in is a BIG bonus though.

Hoàng Minh said...

Có làn da trắng là mong ước của mọi cô gái , sản phẩm thuoc ivory caps giúp làm trắng da toàn thân ngoài ra bạn cũng có thể sử dụng các loại loai kem chong nang tot nhat. Ngoài ra nếu bạn muốn làn da luôn tươi trẻ thì nên dùng my pham sakura nhat ban như kem duong da chong lao hoa sakura giúp làn da luôn trẻ đẹp xóa các nếp nhăn. Cách thuoc herba vixmen an toàn và hiệu quả bằng herba vixmen , vậy thuoc herba vixmen mua o dau , có an toàn không và mua ở đâu sẽ được cho biết sau đây.

Hoàng Minh said...

Có làn da trắng là mong ước của mọi cô gái , sản phẩm thuoc ivory caps giúp làm trắng da toàn thân ngoài ra bạn cũng có thể sử dụng các loại loai kem chong nang tot nhat. Ngoài ra nếu bạn muốn làn da luôn tươi trẻ thì nên dùng my pham sakura nhat ban như kem duong da chong lao hoa sakura giúp làn da luôn trẻ đẹp xóa các nếp nhăn. Cách thuoc herba vixmen an toàn và hiệu quả bằng herba vixmen , vậy thuoc herba vixmen mua o dau , có an toàn không và mua ở đâu sẽ được cho biết sau đây.

Ho Thang said...

Trung tâm luyen thi toeic cấp tốc uy tín tại tp hồ chí minh.Có địa chỉ tại võ văn ngân quận thủ đức.

Fire Ball said...

Nếu bạn nơi để mua do dien may cu thì hãy ghé qua địa chỉ sau http://thangghom.com/. Chúng tôi là nơi cung cấp các thiết bị điện máy cũ với giá cả và chất lượng hàng đầu. Khi bạn thắc mắc mua tủ lạnh ở đâu rẻ nhất tphcm hay nơi nào bán máy lạnh cũ giá rẻ? Thì bạn không cần phải tìm nơi đó nữa, hãy ghé qua thằng ghờm shop nơi bạn có thể mua máy giặt cũ tphcm, tủ lạnh, máy lạnh cũ tại tphcm với giá cả tốt nhất và chất lượng hàng đầu.

Có thể bạn chưa biết hệ thống định vị toàn cầu gps là gì? Hãy ghé qua ngôi nhà kiến thức để tìm hiểu nhé. Đây là nơi tổng hợp các kiến thức hữu ích.

Thao Nguyen said...

Lozi chuyên trang mạng xã hội âm thực checkin địa điểm ăn uống, bạn tha hộ tìm kiếm địa điểm , quán ăn về các món như vịt om sấu, bún đậu mắm tômkem trái dừa ,kingdom beer clublàng nướng nam bộ ,  lẩu kemlẩu trà sữaphong cuasen lý thái tổspaghetti boxsữa chua dẻothái siamtrà sữa randbvuvuzelawatcha cafexôi yếncafe trứngsữa chua mítChả cá Lã VọngChân Gà Nướng, , Bánh Gạo Hàn Quốcbạch tuộc nướngăn vặt hà nộibánh mì chảobún chả hà nội

Thao Nguyen said...

phụ tùng ô tô toyota , phụ tùng ô tô honda , phụ tùng ô tô audi , phụ tùng ô tô ford , phụ tùng ô tô kia , phụ tùng ô tô deawoo , phụ tùng ô tô Hyundai , Phụ tùng ô tô Mitsubishi, Phụ tùng ô tô, phụ tùng ô tô kia

Phu tung oto Mitsubishi, Phu tung oto, phu tung oto kia

Hoàng Gia dịch vụ cưới hỏi,  quay phim chụp hình cưới, cho thuê xe cưới,  wedding decor, bàn ghế xuân hòa,   tổ chức sự kiện đám cưới , áo phủ ghế,  phông sinh nhật

Cách làm món sườn xào chua ngọt với video suon xao chua ngot, cách làm bánh doremon, gà kho gừng,  Cách làm bánh tiramisu , cách nấu bún bò huế, cách nấu cà ri gà , cách làm kim chi, cách làm kim chi hàn quốc, chân gà rang muối , cách làm sushi

Hoat Nguyen said...

http://monansinhvien.com/

Trung Tran Quang said...


- Cách làm bánh bột lọc xứ huế ngon nhất
- Cách làm bánh bột lọc trần đặc trưng Huế
- Cách làm bánh bột lọc nhân tôm thịt đơn giản tại nhà
- Cách làm bánh bột lọc nhân đậu xanh thanh đạm
- Cách làm bánh bột lọc gói lá chuối dân dã
- Cách làm bánh bột lọc chay độc đáo

Thiên Hoàng said...

Thanks for share
Thiên Hoàng – Nhân viên Marketing
------------------------------------------------
Dịch vụ quay phim phóng sự cưới
Dich vu quay phim phong su cuoi

Đào Tạo Vua Bếp said...
This comment has been removed by the author.
Đào Tạo Vua Bếp said...
This comment has been removed by the author.
Đào Tạo Vua Bếp said...
This comment has been removed by the author.
philong said...

Cám ơn vì bài viết
------------------------------------------------
Gà Đông Tảo TPHCM
Web: http://sieuthigadongtao.com
Xem thêm các loại Gà Đông Tảo TPHCM : Gà đông tảo tphcm
Xem them cac loai Ga dong tao tphcm : Ga dong tao tphcm

Ổn áp Standa chính hãng said...

Good day very nice blog!! Man .. Beautiful .. Amazing .. I will bookmark your site and take the feeds additionally?I am glad to find numerous useful info right here within the post, we want work out extra techniques in this regard, thank you for sharing
on ap lioa|lioa|on ap standa|on ap

Lư Trần said...

Mochi (tiếng Nhật: 餅, もち) là một loại bánh dày nhân ngọt truyền thống của Nhật Bản làm từ bột gạo được dùng để ăn trong cuộc sống hàng ngày mà còn là vật phẩm dâng lên thần linh và có ý nghĩa mang lại may mắn. Bánh Mochi nhật bản là vật cúng không thể thiếu trong các gia đình Nhật Bản nhân dịp năm mới. Họ bày trí bánh dày Mochi ở hốc tường Toko-noma trang trọng trong phòng khách hoặc trong nhà bếp.

Nhan Nguyen said...

Dịch vụ mua sắm khắp thế giới fado facebook, nhanh chóng, chi phí thấp, chuyên nghiệp.

bui viet said...

Trong phân bố trang tri noi that nhu cầu chúng có nét hài hòa tạo sự thỏa mãn, gần gũi, nhẹ nhàng với thiên nhiên. Trên thị trường hiện này có đông đảo noi that nha bep mây tre sử dụng trong xếp đặt noi that phong ngu cao cap phong phú chủng loại về hình thức và phong phú về giá trị ngân sách,tính năng dùng nhất là dùng trong noi that do go van phong . Tuy nhiên việc sử dụng đồ trang trí trong nhà may tre tại miền bắc thường gặp hiện tượng mối mọt bởi thời tiết ẩm ướt. vì thế tác phẩm đồ vật dụng trong nhà này chủ nhà phải lựa mua kỹ và gắt gao trong quy trình dùng từ đó tăng tuổi thọ cho tác phẩm tu bep , den nha bep .Ngoài ra để pha chế nội thất do noi that phong khach bạn có thể tận dụng nước muối làm sạch những vết bẩn trên ban an , ghe an , tu phong an khiến sợi mây thêm mềm mại, đồng thời hạn chế tận dụng chất tẩy rửa mang tính kiểm quá mạnh gây tổn hại đến nguyên liệu. Ngoài ra các thứ làm bằng gỗ, tre , mây hút nước khá tốt nếu để ngoài trời chúng bị ướt và tiếp xúc trực diện với ánh nắng mặt trời trọng một thời gian tuyệt tác đặc trưng như ghe sofa go , sofa doi , sofa 3 cho , sofa giuong , sofa goc , ke tivi , tu phong khach , den trang tri phong khach mau tu bep bang go , giường ngủ , tu go phong ngu siêu dể hư hỏng.

wdmtest said...

PHP
AN INTRODUCTION TO PHP
The Origins of PHP
What Makes PHP Better than Its Alternatives
Interfaces to External Systems
How PHP Works with the Web Server
Hardware and Software Requirements
Installation on Apache for UNIX
Installation on IIS for Windows NT
Editing Scripts

Thien Mai said...

OnOnPay là ứng dụng nạp tiền điện thoại online miễn phí qua Internet Banking (Hình thức thanh toán giao dịch Ngân hàng Điện tử qua Internet hay 3G) – Bạn có thể tải và cài đặt miễn phí app OnOnPay từ Apple App Store (cho iPhone hay iPad), hay từ Google Play (cho các smartphone dùng hệ điều hành Android như Samsung Galaxy, Nexus, LG…). Để tải ngay app OnOnPay trên Appstore Apple các bạn click tại đây hoặc tại đây khi có nhu cầu tải app trên Google Play.

Hình thức nạp tiền Vinaphone, MobiFone, Viettel, Gmobile, Vietnamobile hiện nay đang dần trở thành một xu hướng mới, thay thế cho hình thức cào thẻ nạp tiền onlinenạp tiền online & nạp thẻ cào truyền thống. Lý do cho xu hướng đang lan toả rộng rãi này là vì những lợi ích kinh tế và những ưu đãi to lớn về quà tặng cũng như những tiện ích khác khách hàng có thể nhập được. Trong số những nhà cung cấp ứng dụng về dịch vụ nạp tiền Viettel trực tiếp này, OnOnPay có thể chắc chắn là nhà cung cấp dịch vụ đem lại cho khách hàng nhiều hình thức quà tặng hấp dẫn nhất. Hãy nạp tiền mobifone,gmobile,viettel, vinaphone, vietnamobile ngay để nhận quà tặng tại shop quà tặng OnOnPay nhé,

Quỳnh Xuân said...

Tí Nị Shop là dịch vụ chuyên về in hình lên ly, in hình lên đồng hồ, in hình lên gối, in hình lên khung ảnh, in hình lên lót chuột, in hình lên ly sứ, làm tranh ghép hình.
Đây là món quà cực độc đáo, sáng tạo cho bạn bè, người thân!

pham diep chi said...

liệu pháp giam dau benh da day hiệu quả tại nhà . Bài thuốc tây y mới chữa bệnh viêm gan b , Bạn tôi đã chữa khỏi viem amidan man tinh rồi ,Tôi đã cắt viem amidan mu song rất dễ chịu , Bài thuốc người dân tộc viêm đại tràng cấp tính . cần kiêng hay không kiêng benh dau da day nen an gi cho tốt . tìm hiểu thêm về trieu chung benh da day ra sao. ho do benh viem hong chữa được không , Tôi chữa benh amidan cho tre em rất tốt, Khi bị viêm amidan sau khi cat amidan kieng gi .
Thuốc từ dau rong chua benh dau da day .
Viêm mũi dị ứng hay trieu chung viem xoang .
thuốc tây hay những bài thuoc dan gian chua benh da day bệnh mề đay ở người lớn và bệnh nổi mề đay ở trẻ em hay sảy ra không ?.

pham diep chi said...

thuốc đông y chữa đau dạ dày chữa thế nào , làm thế nào để chua benh loet da day ta trang , thế nào là bệnh viêm amidan , Chúng tôi có nhiều cach chua viem amidan hoc mu mãn tính ,Nhiều bài thuốc trị nổi mề đay ban đỏ , Thuốc đông y chữa gan nhiễm mỡ , Làm thế nào chữa viêm phế quản phổi ở trẻ , tôi đã bệnh ho rứt điểm,bệnh viêm mũi dị ứng ,Cách trị viêm mũi xoang mãn tính, Bài thuốc chữa đau dạ dày cấp tính , Phương pháp chữa trào ngược dạ dày thế nào ? ,Bài thuốc chữa benh trao nguoc da day thực quản, Thảo dược đặc trị rụng tóc ở nam giới , Bài thuốc gia truyền chữa bệnh rối loạn kinh nguyệt cực nhanh , bị bệnh thoái hóa đốt sống cổ chữa ra sao

Xu Xu said...

Công ty Bình Lợi - chuyên bán và cho thuê cho thue cau banh lop với nhiều tải trọng của nhiều thương hiệu nổi tiếng khác nhau với giá rẻ và chất lượng ở khu vực miền Bắc.

Tourism SaiGon said...

Với sứ mệnh đem lại trải nghiệm du lịch hoàn hảo cho khách hàng, Tourdulichmientay.com.vn chuyên cung cấp tour Côn Đảo 2 ngày 1 đêm, tour Côn Đảo 3 ngày 2 đêm, tour Phú Quốc 3 ngày 2 đêm | Hãy gọi điện cho chúng tôi qua số hotline: 0996.176.176 để đặt tour Côn Đảo giá rẻ tour Phú Quốc giá rẻ

Yêu cacao said...

- Chúng tôi chuyên cung cấp đèn pha led , đèn led , đèn led siêu sáng, đèn led chiếu sáng, đèn pha led, đèn led , đèn led siêu sáng, đèn led chiếu sáng giá rẻ, chất lượng cao, bảo hành 24 tháng trên toàn quốc. Khi khách hang có nhu cầu mua hang trên toàn quốc.
- Đồng thời chúng tôi còn là nhà cung cấp các loại nguyên liệu mỹ phẩm thiên nhiên như: bơ cacao, bơ ca cao, nguyên liệu mỹ phẩm handmade nguyên chất, cao cấp chất lượng có nhiều công dụng trong việc dưỡng da dành cho khách hàng, được đông đảo chị em phụ nữ ưa chuộng và sử dụng để săn sóc sắc đẹp của mình.
- Nếu khách hàng còn gặp nhiều khó khăn trong việc chăm sóc sắc đẹp thì sản phẩm bơ hạt mỡ, bo hat mo, shea butter, nguyên liệu mỹ phẩm handmade nguyên chất từ tự nhiên có nhiều công dụng trong việc làm mềm mịn làn da, xóa tan vết thâm nám, đẩy lùi mụn cảm và triệt để xóa nhăn. Hãy cùng chúng tôi chăm sóc sắc đẹp của bạn, chỉ có bạn mới có thể tự chăm sóc cho bạn than của mình.
- Sản phẩm tiếp theo mà chúng tôi sẽ giới thiệu cho các bạn đó là: bơ đậu phộng, bo dau phong , bơ đậu phộng ăn với gì, bơ đậu phộng bán ở đâu thơm ngon, cao cấp chất lượng có nhiều công dụng trong việc dưỡng da dành cho khách hàng, được đông đảo chị em phụ nữ ưa chuộng và sử dụng để săn sóc sắc đẹp của mình.
- Ngoài ra chúng tôi còn là nhà cung cấp dịch vụ ăn uống khắp toàn quốc, đặc biệt là đặc sản cơm niêu, cơm niêu sài gòn, cơm niêu vũng tàu được đông đảo khách du lịch ưa chuộng và là điểm đến khi có nhu cầu ăn uống những món ăn ngon.
- Và cuối cùng là một trong những dòng sản phẩm nhập khẩu cao cấp nhạp trực tiếp từ Úc và Mỹ: bột yến mạch, bot yen mach , yến mạch, yến mạch giảm cân thơm ngon, cao cấp chất lượng có nhiều công dụng trong việc dưỡng da dành cho khách hàng, được đông đảo chị em phụ nữ ưa chuộng và sử dụng để săn sóc sắc đẹp của mình.

Ổn áp Standa said...

I simply could not depart your website before suggesting that I extremely loved the usual info an individual supply on your visitors? Is going to be again frequently to check up on new posts
on ap lioa|on ap standa