Tuesday, July 26, 2011

The Trouble with Erlang (or Erlang is a ghetto)


This is a blog post I have been meaning to write for quite some time. I lament doing so because I've made a considerable time investment into the Erlang infrastructure and really love some of its ideas. Erlang has done a great and still unique job of synthesizing a number of concepts in a very interesting way. But after using the platform in various capacities for some 4 years now, there are some glaring issues I think need to be called out.

Records suck and there's no struct/map data structure

Erlang has a feature called "records" which uses the preprocessor to give you something akin to a struct or map, i.e. a way to access named fields of a particular object/term within the system. As far as I can tell, there's pretty much universal agreement within the community that this is a huge limitation, and several proposals have been made to remedy the problem. The requested feature has typically been referred to as a "frame", and several proposals for implementing frames have been floating around for several years. Yet no action has been taken on the problem.

So why doesn't Erlang have frames? While Erlang is an open source project, its implementation and release cycle are managed by Ericsson, the company that created it, and Ericsson just doesn't seem to care. I'm not sure what Ericsson's priorities are when it comes to adding features to Erlang, but in my opinion they're doing a worse job of engaging the community than Oracle has been doing with Java. I hate Oracle as a company, but so far it feels like they've actually done a fairly good job managing Java development and moving Java forward. I can't say that at all with Ericsson, and frames are the quintessential example of this.

Erlang sucks at managing memory

Once upon a time I looked upon BEAM's design as the future pattern all virtual machines would follow. I strongly encourage you to read that post before taking issue with anything I have to say in regard to this matter. I have completely reversed my opinion since the time I write that post.

The other night I tweeted "If you're looking for a language that gets multicore concurrency right, look at how Azul implemented Java on their Vega architecture" and I definitely stand by that. Azul is a company that got a lot of smart hardware and software people together and had them work on designing a custom system which would scale to hundreds of CPU cores (up to 768 of them), heaps that topped 500 GB (up to 768GB), and had the GC pause only 10-20ms at a time. The realtime performance characteristics Azul managed to eek out of their system lead them to often describe their GC as "pauseless".

Where Azul was scaling up to 768 CPUs in 2007, Erlang was crapping out around 15 CPUs in 2009. For everything Erlang had to say about the importance of immutability and messaging in concurrent systems, and despite Joe Armstrong's promise that "your Erlang program should just run N times faster on an N core processor," it turns out that on the Erlang VM the N core processor promise had an upper bound of around 15.

Why is this? Erlang implements its own memory allocator and can't take advantage of libraries like tcmalloc to provide better multithreaded heap management. I can't fault a language VM like BEAM for doing this save for the fact that what Erlang provides is relatively crappy.

Erlang has done a fairly decent job given the constraints it was working within. Erlang wanted to provide a soft realtime system, and managed to create one that works on commodity architectures, unlike the Azul Vega appliances which require custom hardware. However, Azul has managed to port their version of the JVM to x86 hardware with their Zing Architecture, which wraps the JVM in a separate runtime container which uses software transactional memory to replace the hardware transactional memory found on the Vega appliances. It's higher overhead but provides similar guarantees. Java also provides the RTSJ specification for building realtime systems in Java.

Both Zing and RTSJ demonstrate that Erlang's approach to building a realtime garbage collected system, using separate heaps per process, isn't necessary to still provide realtime characteristics. Erlang's approach of using separate heaps is nonstandard and comparatively hard to optimize because most other systems are using a shared heap model. Azul's Vega architecture shows that shared heaps can scale up to hundreds of CPU cores and hundreds of gigabytes of heap while still providing realtime characteristics. Even more exciting is that AMD's Fusion architecture, which they're implementing in conjunction with ARM, provides read and write barriers at the hardware level necessary to provide a system like Azul using commodity hardware.

However, I think everything I just said is moot for the majority of applications. People building messaging systems want the best performance possible but don't typically have software realtime constraints. The Erlang VM's approach to soft realtime made a design decision which hampers its messaging speed, namely the use of separate heaps, which requires messages be copied from one heap to another. This means the Erlang VM does not provide zero-copy messaging. Every time you send a message from one Erlang process to another, some amount of data must be copied.

Erlang has partly mitigated this problem by providing a separate shared heap for binaries, which are the Erlang type for arbitrary blobs of binary data. This means if you ensure the majority of data you move around doesn't contain anything of significant size except binaries, perhaps this won't be a problem. However, if you're moving large collections of numbers around (Erlang's strings-as-lists-of-integers come to mind), messaging will be comparatively slow compared to a zero copy system.

Various solutions to this have been proposed for BEAM, such as switching from a shared-nothing heap to a shared heap or a hybrid heap (where message-passed objects are copied once), however the Erlang garbage collector is not suitable for managing shared/hybrid heaps and would need to be rewritten for the task, and nobody has managed to get the shared/hybrid heaps working with Erlang's SMP scheduler, or rewritten the garbage collector to be more suitable to the task of managing a shared/hybrid heap.

A potential solution to this? Erjang, an implementation of Erlang on the JVM, provides zero copy messaging using the Kilim library for lightweight threads.

JIT? What JIT?

Erlang has a "JIT" compiler called HiPE, which is mostly hype. I put JIT in quotes because HiPE is mostly an Erlang-to-native-code compiler with a limited set of backends which does a pretty bad job of optimizing and can't use runtime profiling information to improve the quality of the native code it generates in the way JIT compilers like HotSpot are able to. Calling HiPE a just-in-time compiler is a stretch as it is for most part an ahead-of-time native compiler for Erlang. The quality of native code produced by HiPE can be so poor that it's often outperformed by the userland bytecode interpreter implemented in BEAM.

HiPE can perform a very limited set of optimizations. In particular, Erlang code is factored into modules, and HiPE's inliner is unable to inline natie code across modules. This is due to HiPE's lack of a deoptimizer (a.k.a. deopt), or a way to translate JITed code back into bytecode, which is necessary in general but particularly necessary in Erlang for cases like hot code swapping. Deopt support is a feature of many JIT compilers in languages more popular than Erlang, most notably the HotSpot compiler on the JVM. Google's V8 virtual machine for JavaScript added deoptimization support as part of their "Crankshaft" compilation infrastructure.

Erlang isn't general purpose

Erlang hates state. It especially hates shared state. The only facility provided by the language for dealing with shared state in Erlang is called "Erlang Term Storage" and provides a Judy array that several Erlang processes can talk to. The semantics of ETS are fairly awkward and using it directly is difficult. Erlang has a baked-in database called Mnesia which is built on ETS. Mnesia's performance characteristics aren't great but it provides a friendlier face for ETS. These are the only solutions to shared state baked into the language.

What should you do if you want to deal with a shared-state concurrency program in Erlang? The general advice is: don't. Erlang isn't designed for solving shared-state concurrency problems. If you encounter a shared state concurrency problem while developing your Erlang program, sorry, you picked the wrong language. Perhaps you should move along... and Clojure offers you some great ways to tackle shared state concurrency problems.

The syntax is atrocious

I think this one goes without saying. That said...

Let me come at this from a different angle than you're probably expecting: I've recently started working with Clojure, and I have to say, I really think Erlang would've been a lot better off with a Lisp-like syntax than a Prolog-inspired syntax. To-date Erlang is the only popular language with a Prolog inspired syntax and all of the awkward tokens and gramatical constructions make me wish it just had a simple Lispy syntax. This has been implemented in Robert Virding's Lisp Flavoured Erlang, which is very cool and worth checking out.

That opinion might come as a surprise, because the main project I was developing in Erlang was Reia, a Ruby-like syntax and runtime for Erlang. I've discontinued this project, for many reasons, one of which is because it's been surpassed in features and documentation by a similar project, José Valim's Elixir. After years of working on Reia, I've really grown to believe I'd rather spend my time working on a language which incorporates Erlang's ideas, but on the JVM with mutable state.

The Erlang cargo cult would love to hang me out to dry for even saying that... so let me address it right now.

Immutable state sucks and isn't necessary for Erlang-Style Concurrency

Immutable state languages force object creation whenever anything changes. This can be partially mitigated by persistent data structures, which are able to share bits and pieces of each other because they're immutable. This works, for example, when attempting to create a sublist that consists of the last N elements of a list. But what if you want the first N elements? You have to make a new list. What if you want elements M..N? You have to make a new list.

In mutable state languages, performance problems can often be mitigated by mutating local (i.e. non-shared) state instead of creating new objects. To give an example from the Ruby language, combining two strings with the + operator, which creates a new string from two old ones, is significantly slower than combining two strings with the concatenating >> operator, which modifies the original string. Mutating state rather than creating new objects means there's fewer objects for the garbage collector to clean up and helps keep your program in-cache on inner loops. If you've seen Cliff Click's crash course on modern hardware, you're probably familiar with the idea that latency from cache misses is quickly becoming the dominating factor in today's software performance. Too much object creation blows the cache.

Cliff Click also covered Actors, the underpinning of Erlang's concurrency model, in his Concurrency Revolution from a Hardware Perspective talk at JavaOne. One takeaway from this is that actors should provide a safe system for mutable state, because all mutable state is confined to actors which only communicate using messages. Actors should facilitate a shared-nothing system where concurrent state mutations are impossible because no two actors share state and rely on messages for all synchronization and state exchange.

The Kilim library for Java provides a fast zero-copy messaging system for Java which still enables mutable state. In Kilim, when one actor sends a message, it loses visibility of the object it sends, and it becomes the responsibility of the recipient. If both actors need a copy of the message, the sender can make a copy of an object before it's sent to the recipient. Again, Erlang doesn't provide zero-copy (except for binaries) so Kilim's worst case is actually Erlang's best case.

The limitations of concurrent objects in Reia were solved using mutable state in my Celluloid concurrent object library for Ruby, but that deserves a blog post in and of itself.

Single assignment is just as problematic as destructive assignment

Erlang doesn't allow destructive assignments of variables, instead variables can only be assigned once. Single assignment is often trotted out as a panacea for the woes of mistakenly rebinding a variable then using it later expecting you had the original value. However, let me show you a real-world case that has happened to me on several occasions which wouldn't be an error in a language with destructive assignment and pattern matching (e.g. Reia).

There exists a complimentary case of mistaken variable usage to the afforementioned problem with destructive assignment. In single-assignment programs, it involves mistakenly using the same variable name twice excepting the variable to be unbound the second time:

The first pattern matching expression binds the Foo variable to something. In the second case, we've mistakenly forgot Foo was already bound. What's the result?

exception error: no match of right hand side... 

We get no compiler warning in this case. This is the type of error you only encounter at runtime. It can lay undetected in your codebase, unless you're writing tests. Know what other problem writing tests solves? Mistaken destructive assignments.

Single assignment is often trotted out by the Erlang cargo cult as having something to do with Erlang's concurrency model. This couldn't be more mistaken. Reia compiled destructive assignments into Static Single Assignment (SSA) form. This form provides versioned variables in the same manner as most Erlang programmers end up doing manually. Furthermore, SSA is functional programming. While it may not jive with the general idealism of functional programming, the two forms (SSA and continuation passing style) have been formally proven identical.

The standard library is inconsistent, ugly, and riddled with legacy

Should module names in the standard library be plural, like "lists"? Or should they be singular, like "string"? Should we count from 1, as in most of the functions found in things like the lists module, or should we count from 0 like the functions found in the array module? How do I get the length of a list? Is it lists:length/1? No, it's erlang:length/1. How do I get the Nth element of the tuple? Should I look in the tuple module? Wait, there is no tuple module! Instead it's erlang:element/2. How about the length of a tuple? It's erlang:tuple_size/1. Why is the length of a list just "length" whereas the length of a tuple is "tuple_size"? Wouldn't "list_length" be more consistent, as it calls out it works on lists?

When we call erlang:now() to get the current time, it returns {1311,657039,366306}.  What the hell does that mean? It's a tuple with three elements. How could time possible need three elements? A quick look at the documentation reveals that this tuple takes the form {Megaseconds, Seconds, Microseconds}. Separating out Microseconds makes sense... Erlang has no native decimal type so using a float would lose precision. But why split apart Megaseconds and Seconds?

Once upon a time Erlang didn't support integers large enough to store the combination of Megaseconds and Seconds, so they were split apart. The result is a meaningless jumble of three numbers, which you have to run through the confusingly named calendar:now_to_local_time/1 function to get a human meaningful result, which doesn't tell you what time it is now, but instead takes the tuple that erlang:now/0 returns as an argument and will spit back meaningful {Year, Month, Day} and {Hour, Minute, Second} tuples.

Legacy in the grammar

Try to use "query" as an atom in Erlang, e.g. {query, "SELECT * FROM foobar"}. What happens?

syntax error before: ','

This is because 'query' is a reserved word which was reserved for Mnemosyne queries. Never heard of Mnemosyne? That's because it's an archaic way of querying Erlang's built-in database, Mnesia, and has been replaced with Query List Comprehensions (QLC). However, it remains around for backwards compatibility.

You can't use "query" as a function name. You can't tag a tuple with "query". You can't do anything with "query" except invoke a deprecated legacy API which no one uses anymore.

Strings-as-lists suck

Erlang provides two ways of representing strings. One is as lists of integers, which is the traditional way that most of the library functions support. Another is binaries. Erlang has no way of differentiating lists of integers that represent strings from lists of integers that are actually lists of integers. If you send a list of integers in a message to another process, the entire list of integers is copied every time. On 64-bit platforms, every integer takes up 64-bits.

The obvious solution here is to use binaries instead of lists of integers. Binaries are more compact and exist in a separate heap so they aren't copied each time they're sent in a message. The Erlang ecosystem seems to be gradually transitioning towards using binaries rather than strings. However, much of the tooling and string functions are designed to work with list-based strings. To leverage these functions, you have to convert a binary to a list before working with it. This just feels like unnecessary pain.

The abstract concept of lists as strings isn't inherently flawed. In many ways it does make sense to think of strings as lists of characters. Lists as strings would probably make a lot more sense if Erlang had a native character type distinct from integers which was more compact and could avoid being copied each time a string is sent in a message like a binary. Perhaps in such a system it'd be possible to avoid transcoding strings read off the wire or completely transforming them to a different representation, which is costly, inefficient, and often times unnecessary (yes, this is a problem with Java too).

There's no "let"

Want a local binding in Erlang? Perhaps you've used let for this in a Lisp. What happens when you try to do this in Erlang? Even attempting to use "let" in Erlang just yields: syntax error before: 'let'

Once upon a time Erlang was supposed to get let bindings, and the "let" keyword was set aside for this purpose. But much like frames, it never happened. Instead, let is now an unimplemented reserved word which just breaks your programs.

There's no "nil"

In Clojure, I can write the following: (if false :youll-never-know).  This implicitly returns "nil" because the condition was false. What's the equivalent Erlang?

Erlang forces you to specify a clause that always matches regardless of whether you care about the result or not. If no clause matches, you get the amazingly fun "badmatch" exception. In cases where you don't care about the result, you're still forced to add a nonsense clause which returns a void value just to prevent the runtime from raising an exception.

Where do I go from here?

Again, I want to emphasize that I have a great deal of respect for Erlang conceptually. But at this point I'd like to take what I've learned and go elsewhere with it. One direction I've gone is the Celluloid concurrent object library for Ruby. You can read more about it in the original blog post I wrote about Celluloid, which is a bit out-of-date at this point. I have a forthcoming blog post which should dive a bit deeper into Celluloid's guts and how it can do things which aren't possible in Erlang.

As you've probably guess from the references sprinkled throughout this post, I'm learning Clojure. I'm a fan of the JVM and Clojure provides a great functional language for leveraging the JVM's features. I think the sort of things that I'd be writing in Erlang I'll try writing in Clojure instead. Clojure has elegant Lisp syntax. Clojure has maps. Clojure has powerful facilities for dealing with concurrent shared state problems. Clojure has great semantics for safely managing mutable state in a concurrent environment. Clojure has real strings. Clojure has let. Clojure has nil. Clojure runs on the JVM and can leverage the considerable facilities of the HotSpot JIT and JVM garbage collectors.

I'd also like to try my hand at creating a JVM language, especially with the impeding release of Java 7 this Thursday. Java 7 brings with it InvokeDynamic, a fast way to dispatch methods in dynamic languages, and considerably eases the difficulty of implementing dynamic languages on the JVM. Stay tuned for more details on this.

596 comments:

  1. Erricson's community-management probably isn't flawless, but I think they do a good job at integrating contributions from the community, especially since they moved to git.

    I guess that, while records suck in some respects, they're good enough and nobody has cared enough to put forward a full replacement (using frames or whatever).


    I mostly agree with your other comments, although to me they're not enough to give up on erlang's good points. Many of you complaints stem from the fact that erlang is both old and stable, which is a blessing and a curse. And like any tool, erlang is not good at everything.

    ReplyDelete
  2. To complete:

    if crashing when you don't match a value makes perfect sense considering it's an expression, which means it always returns something.

    1> E = if 1 > 0 -> car; 1 =< 0 -> dog end, E.
    car

    Not returning something would completely mess up the idea behind using expressions for everything.

    ReplyDelete
  3. Clojure is a purely expression-based grammar as well (it's a Lisp, after all). However if you don't provide an "else" clause to an if expression, Clojure implicitly returns nil.

    Erlang could do the same... they just chose not to.

    ReplyDelete
  4. (any idea where my other comment went, Tony?)

    This is something that Erlang could possibly do in cond as Robert Virding suggested it, or even in cases. For ifs, the semantics of guards are kept, and non-matching guards never do anything. It would be weird to create an exception just for this.

    Moreover, I do enjoy the ability to raise an error when nothing matches. Is there any way to keep this behaviour when you need it? If it doesn't, I'm not sure I'd be ready to do the switch. For the time being, I prefer to do 'SomeCond andalso Consequence' rather than adding empty clauses to manually raise an error in all cases/ifs. Personal preference though.

    ReplyDelete
  5. Well, because my two attempts at posting my main comment failed, here it is: https://gist.github.com/f99035df1bc1d5f8a218/764b3a6c57e4048e3a3966d0b973e8628388e75b

    ReplyDelete
  6. Tony: Besides the VM performance, syntax and legacy details, what do you think about the Concurrency model of Clojure vs. the one in Erlang? I think Clojure syntax is cleary better than Erlang, but I'm not so sure on the Concurrency model. Linked actors seems to map the reality better (reality is concurrent, and each part/actor doesn't have the whole vision).


    Do you have experience in large systems in Erlang vs Clojure ones? And in hot-code-swapping in Clojure vs Erl?

    ReplyDelete
  7. Pardon my very direct interpretation of what happened:

    So you were recently kinda trolled by R.O'Keefe on the Erlang list and now the bitterness... Quite an emotional response, don't you think?

    ReplyDelete
  8. Nahuel: I think Clojure and Erlang's concurrency models target different problems, but Clojure's is more general purpose. What Erlang provides can be added at the library level. The only large system I've built in Erlang is Reia. I haven't build a large system in Clojure yet.

    frk: this post has been a long time coming. That was just the straw that broke the camel's back.

    ReplyDelete
  9. So, I know you said you didn't like Scala a couple years ago, but we're having some fun over here. :)

    Since you left, Akka was released, bringing a lot of asynchronous, high-scale, actor-based goodness, and Scala 2.8+ has made working with collections an absolute joy.

    ReplyDelete
  10. > Even more exciting is that AMD's Fusion architecture, which they're implementing in conjunction with ARM, provides read and write barriers at the hardware level necessary to provide a system like Azul using commodity hardware.

    Can you elaborate? The article you are linking to says nothing about this capabilities of Fusion arch.

    ReplyDelete
  11. Where I come from, 10-20ms is an eternity. It's hardly pauseless. Build a GC that runs in under 1μs and I'll consider it pauseless.

    BTW, interesting to see the evolution of your position over the years. I'll miss Reia, but I'm interested to see what you invent next.

    ReplyDelete
  12. You might consider moving on to .NET. It's recently implemented (.NET 4.0) many of Erlang's best concepts regarding concurrency and parallelism, while avoiding its (many) worst. It's also highly performant, and can be run on non-Microsoft architectures.

    Here for example are the docs on the Task Parallel Library, that make concurrency almost stupidly simple to implement.

    http://msdn.microsoft.com/en-us/library/dd460717.aspx

    You might also take a look at the yield statement, and this broader topic on Parallel Programming in .NET:
    http://msdn.microsoft.com/en-us/library/dd460693.aspx

    ReplyDelete
  13. "The semantics of ETS are fairly awkward and using it directly is difficult."

    Really?
    ets:insert
    ets:lookup
    ets:delete

    Awkward and difficult?

    ReplyDelete
  14. Hi :) I think he meant that the meaning of those functions changes depending on the type and options of the ETS table.

    I will go so fa as to agree that you have to be pretty sure what you are doing when you initialize an ETS table in a certain manner.

    ReplyDelete
  15. Your single-assignment complaint is more a side-effect of Erlang's binding-as-pattern-matching rather than anything that's inherent. Other languages will either complain at compile time or open a new binding with a new scope.

    ReplyDelete
  16. Your understanding of persistent data structures is naive. While singly linked lists are persistent on operations that preserve tails, there are other data structures that are persistent on the operations you mentioned -- such as the ones used by Clojure and Scala.


    And the comment about String is also interesting, because if they were implemented as ropes, you'd not only have a persistent data structure, but actually gain performance for some operations (and lose for others).

    ReplyDelete
  17. I have no qualms with the syntax whatsoever, but I guess I was brought up on prolog quite early.
    Strings as lists arent always optimal, I agree.

    ReplyDelete
  18. Arguing about strings with the old Erlangers is akin to stabbing oneself in the eye with a butter knife. I have re-implented a string object based on binaries, complete with encoding-aware string functions. The response on the list was basically "Why would we need that? A list of integers is fine!" Luddites, really...

    ReplyDelete
  19. dda, can your functions handle string lengths in the presence of unicode control characters? I'm having problems with that right at the moment and would be interested in seeing if your code can help.

    ReplyDelete
  20. I haven't tried the strLength as thoroughly as the rest – I was kind of disappointed by the lack of enthusiasm and the abundance of backlash – but a quick test just now with a UTF-8 string containing 5 Chinese characters and a tab returns the correct length: 6.

    > mb:test(strLength).
    strLength("廣東話 好好") = 6.

    So if you have test cases, I can try them on, and see how it works.

    ReplyDelete
  21. I'd suggest taking a look at Haskell. Even if you end up hating it, it will be a mind expanding experience that will have been worth your time.

    ReplyDelete
  22. You said:
    "Erlang is not general purpose"

    Of course. I don't see value in another general purpose language.

    Also, I can't understand why do you need state so desperately.

    In fact you have process dictionary if you need state so badly.

    But why?

    ReplyDelete
  23. Speaking of "general purpose" languages, well, I don't think those words mean what you think they mean.

    A general purpose language is one which is usable for more than a specific application domain; i.e. not TeX. Perhaps you're looking for "multi-paradigm" or something.

    ReplyDelete
  24. "The syntax is atrocious

    I think this one goes without saying. That said..."


    I think if you're going to make an assertion like this you need to provide something to support it.

    "Erlang isn't designed for solving shared-state concurrency problems. If you encounter a shared state concurrency problem while developing your Erlang program, sorry, you picked the wrong language."

    Can you give an example of a "shared-state concurrency problem"?

    Thirdly, you don't address what I would consider key features of Erlang: distribution, error recovery, OTP application management.

    ReplyDelete
  25. yo. thanks for your post. i'm a long-time erlang fan-boy who very much appreciates doses of reality like this. food for thought, we all need to be looking out for the 'boat anchors in stockholm syndrome' we have become cozy with.

    now. the problem is that erlang really does have the nine-nine mojo. i could try to go do things like it in akka or clojure, but i'd probably hit some weird bugs, no? that's the trade-off, no? a nice new fancy language with some sane syntax + the chance of hateful bugs (scala just blows my mind with the bug lists) VS. really crappy apis that i will never understand but once i do, if i do muddle though, will be super rock solid? even if slow?

    ReplyDelete
  26. Great post Tony!

    What do you think of Google Go as a language in programming concurrency? Do you think it will get more popular for its Goroutine?

    ReplyDelete
  27. Re Erlang syntax - atrocious: passing personal preference as proof seems to be a growing trend these days.

    In my view, Lisp's syntax is atrocious and mind corrosive, while Erlang's is pure poetry.

    Who is right?

    ReplyDelete
  28. What's the prolem?
    Use the lang which fills your needs.
    In one project I used Erlang to handle mio's of network events from the internet. But after collection and enrichment I propagated them to a python process to do the data wrangling.

    In terms of concurrency Erlang is unbeaten. Clojure, actors, etc. running on a JVM do not scale.
    Why? Simple. The OS decides when a contect switch is done.
    As Erlang is interpreted the processes run much more concurrently.
    There is one rule in JVM concurrency: don't do thread blocking!
    In Erlang it is impossible.

    But, you are right the language is ugly, somtimes verbose and old.
    Old and stable - simple.

    Don't forget failure-tolerance. Erlang shines here.
    And they can proof it in production.

    Today I'm going with Akka. But it as also weaknesses.
    As with every programming language on this dumb planet, sorry for that.

    ReplyDelete
  29. Interesting article but I do disagree with a couple of points.

    "If you're looking for a language that gets multicore concurrency right, look at how Azul implemented Java on their Vega architecture"

    As you said, "latency from cache misses is quickly becoming the dominating factor in today's software performance" but the lack of value types on the JVM is a fundamental design flaw that undermines that cache miss rate. The JVM is incapable of storing an array of pairs of values of different types contiguously in memory and the incidental indirections that it introduces (i.e. boxing) destroy locality and, consequently, destroy scalability on multicores. I once calculated that Cliff Click's concurrent hash table on 100 Azul cores was running at the same speed as a serial .NET hash table on one Intel code.

    So Azul have done a fantastic job of multicore Java and JVM but not multicore in general because the JVM imposes such crippling limitations in this context.

    "Too much object creation blows the cache."

    Only if your objects survive. Provided they die in the nursery generation, object creation is cheap and stays in-cache. If they survive, it is much more expensive and can go out-of-cache.

    Historically, functional programming languages have been used a lot for metaprogramming where you tend to have lots of trees and lots of small collections (e.g. maps containing a few variable bindings) and not the large collections you see in more general programming. Purely functional data structures worked well there because the nursery generation would collect most of the garbage generated by unreachable old versions of collections. With larger collections you hit that survival problem and performance can be really bad. However, purely functional data structures are still easier for a garbage collection to traverse incrementally so they should make it easier to obtain lower pause times.

    ReplyDelete
  30. Elixir-lang has solved 85 percent of your valid concerns above.

    ReplyDelete
  31. Funny thing you don't mention at all the sheer goal of Erlang, fault-tolerance, which is the main reason for the share-nothing heap. If the HTM or STM gets currupted, your 768 process will work wrong or fall like dominoes. Erlang prioritizes fault tolerance over everything else, even performance. There is a talk from one of the engineers from Azul, who saids the HTM is not a dreamland, it brings probabilistic to the update in memory, your program might believe they perform a change when the actually haven't or it changed to what other process did, and the other process believes it fails when actually succeeded. This is what Erlang/OTP & the BEAM avoids. They want to isolate the impact of disturbances, read about.

    The collection of garbage can be done quickly by killing a process.

    It is sad to see people who can't understad something unfamiliar to their fixated ways, they call it a ghetto.

    ReplyDelete
  32. Online JSF Training JSF Training Institutes in Chennai Java Training Institutes Java Training Institutes Struts2 Training Institutes in Chennai Struts2 Training Institutes in Chennai

    EJB Training Institutes in Chennai EJB Training Institutes in Chennai Java EE Training Institutes in Chennai Java EE Training Institutes in Chennai Java Training in CHennai |

    ReplyDelete

  33. your article is more useful and informative.. thanks to share this... keep rocking..


    Dot Net Training in chennai

    ReplyDelete
  34. يمكنكم الان من خلال نقل عفش مكة نقل جميع قطع الاثاث بامان تام كما اننا نحرص على توفير جميع وسائل المواصلات الحديثة المتنوعة من خلال نقل عفش مكة باسعار مميزة ومتاحة للجميع
    للاستعلام
    http://www.xn-----jtd6bya2cendpd.com

    ReplyDelete
  35. يمكنك الان من خلال شركة تنظيف الخزانات بمكة الحصول على مياه نظيفة وصالحة للاستخدام كما نوفر لك مكافحة حشرات بمكةللتخلص من كافة انواع الحشرات المزعجة بوسائل امنةوفعالة
    للتواصل

    http://www.el3nod.com/1/company-tanks-isolation-cleaning-mecca

    http://www.el3nod.com/5/company-anti-insect-termite-Pesticides-mecca

    ReplyDelete
  36. I am pleased with your good work. Praising time and efforts you put into your blog section.
    please keep blogging with us and keep adding. Cupshe Coupon codes If you are looking for best deals and offers so here you will get more best offers at an affordable price.

    ReplyDelete
  37. Love all the tips Thank you for sharing them! I hope you will continue to have similar posts to share with everyone thanks for this article you have to be shared at this time.
    Obat gondok beracun paling ampuh

    ReplyDelete
  38. This comment has been removed by the author.

    ReplyDelete
  39. This comment has been removed by the author.

    ReplyDelete
  40. Thanks for sharing, nice post! Post really provice useful information!

    Giaonhan247 là đơn vị công ty gửi hàng đi mỹ uy tín với giải đáp thắc mắc về alibaba là gì, alipay là gì, rakuten là gì hay mua hàng trên amazon có ship về việt nam không cũng như mua hàng trên amazon có đảm bảo không uy tín không.

    ReplyDelete
  41. This comment has been removed by the author.

    ReplyDelete
  42. This comment has been removed by the author.

    ReplyDelete
  43. This comment has been removed by the author.

    ReplyDelete
  44. This comment has been removed by the author.

    ReplyDelete
  45. This comment has been removed by the author.

    ReplyDelete
  46. This comment has been removed by the author.

    ReplyDelete
  47. This comment has been removed by the author.

    ReplyDelete
  48. This comment has been removed by the author.

    ReplyDelete
  49. This comment has been removed by the author.

    ReplyDelete
  50. This comment has been removed by the author.

    ReplyDelete
  51. This comment has been removed by the author.

    ReplyDelete
  52. This comment has been removed by the author.

    ReplyDelete
  53. This comment has been removed by the author.

    ReplyDelete
  54. This comment has been removed by the author.

    ReplyDelete
  55. This comment has been removed by the author.

    ReplyDelete
  56. This comment has been removed by the author.

    ReplyDelete
  57. howdy, your websites are really good. I appreciate your work. https://yolongbrewtech.com/products/

    ReplyDelete
  58. Good website! I truly love how it is easy on my eyes it is. I am wondering how I might be notified whenever a new post has been made. I have subscribed to your RSS which may do the trick? Have a great day! How to register a company

    ReplyDelete
  59. Thanks for sharing this post. Kanhasoft is top notch software company offering offshore DotNet development services in India. We are expert in creating robust and reliable Dot net web application at the affordable price. Visit our site to know more about us.

    ReplyDelete
  60. يتواجد لدي موقع مكتبتك الكثير من الانواع المختلفة للتقنيات العالية في الجودة منها توفير خدمة الاطار النظري للبحث العلمي في مختلف المجالات العلمية

    ReplyDelete
  61. useful information on topics that plenty are interested on for this wonderful post.Admiring the time and effort you put into your b!.. grammarly premium free trial

    ReplyDelete
  62. This comment has been removed by the author.

    ReplyDelete
  63. This comment has been removed by the author.

    ReplyDelete
  64. This comment has been removed by the author.

    ReplyDelete
  65. This comment has been removed by the author.

    ReplyDelete
  66. ما هي خدمة صيانة وايت ويل
    ؟!
    يقدم مركز صيانة وايت ويل
    ويل لخدمات صيانة وايت ويل
    خدمات الصيانة والإصلاح والتشخيصات لكل انواع أجهزة وايت ويل ، وهي تضمن لكم تقديم خدمات على أعلى مستوى بأسعار معقولة، الفنيون الذين يعملون في مركز صيانة وايت ويل مدربون على أحدث التقنيات ولديهم أحدث المعدات التشخيصية لتحديد أية أخطاء موجودة بأجهزة وايت ويل بأسرع وأدق درجة ممكنة ، قطع الغيار التى يتم استبدالها ستكون على نفس الدرجة من الجودة تماما مثل الأجزاء الأصلية التي كانت موجودة بجهاز وايت ويل ، تعمل شبكة توكيل وايت ويل لخدمات صيانة وايت ويل طبقا للمعايير المهنية وايت ويل لخدمات صيانة وايت ويل
    ، تم الحصول على موافقة معايير حمايةوخدمة المستهلك The Consumer Codes Approval التي تديرها معهد المعايير التجارية Trading Standards Institute على المعايير المهنية الخاصة بمراكز صيانة وايت ويل لحدمات صيانة أجهزة وايت ويل ، هذا التعهد تجاه العميل يمنحك راحة البال بعلمك بأنك لن تحصل فقط على أفضل خدمة فنية، وإنما أفضل خدمة عملاء أيضا، بتكلفة أقل مع أعلى معايير الخدمات الفنية وخدمة العملاء، لم لا تتصل إذن بمركز صيانة وايت ويل لخدمات صيانة أجهزة وايت ويل ؟

    ReplyDelete
  67. يركز موقع مكتبتك على أهمية اعداد الاطار النظري باعتبارها الهيكل العظمي لكافة الابحاث العلمية والتي يجب تقديمها بأسلوب علمي دقيق يعرض هدف البحث وموضوعه بصورة مبسطه يسهل استيعابه

    ReplyDelete
  68. Thanks for sharing, nice post! Post really provice useful information!

    Giaonhan247 chuyên dịch vụ mua hộ hàng mỹ uy tín với các loại nước hoa pháp chính hãng từ dịch vụ mua hộ nước hoa pháp uy tín, và bảng giá cước gửi hàng đi mỹ cũng như hướng dẫn cách mua hàng trên ebay việt namcách tính thuế khi mua hàng trên Amazon uy tín, giá rẻ.

    ReplyDelete
  69. You most likely have a normal compression ratio( the mount of fuel to air that gets compressed when the piston goes thru its normal travel) Extra octane does not "clean" and engine nor does it help in any way if your engine is not designed to burn it. Consult your boat engine's manual to see what octane you should be using. Click here: https:boatingmagz.com

    ReplyDelete
  70. The author is the Director and Digital Marketing Expert in India, a Best SEO Company company in India. With experience of more than 5 years.

    ReplyDelete
  71. I am really happy to read this blog post, you have many information put it on this article, am really suggest to my all dear friend to visit this blog post and collect this useful and valuable information, keep sharing like this type of blog post, thank you so much for read my comment, if any one searching top 5 website designing company in India please come on my website we are doing for you any type of website design for your, business grow up your work grow up your money.
    Web Designing Company in Delhi

    ReplyDelete
  72. The way you describe details in your blog is really good. I hope you'll keep writing such good blogs.
    Escorts in Delhi
    Delhi Escorts

    ReplyDelete
  73. Am visit of many blog but not get valuable information, but after seen your blog provide it me a lot of valuable and useful information I really like to thank you so much for share this information with us, if are inserted in grow up your life style and also grow up your looking so please come on my website am put it on many information so and visit again time thank you so much for read my comment I hope your also like my comment and you also go on my web page.
    Lifestyle Magazine

    ReplyDelete
  74. لوله بازکنی تهران توسط شرکت سرویس لوله با بهترین کیفیت و قیمت انجام می شود. همچنین تخلیه چاه تهران نیز به بهترین نحو ممکن در سراسر استان تهران انجام می شود

    ReplyDelete
  75. Thats a Great Post. I hope you will continue to post such great posts again and again

    I came here after reading Best Mini Projectors and Netgear Nighthawk Ac1900 R7000 Review

    ReplyDelete

  76. ما هي خدمة صيانة وايت ويل
    ؟!
    يقدم مركز صيانة وايت ويل
    ويل لخدمات صيانة وايت ويل
    خدمات الصيانة والإصلاح والتشخيصات لكل انواع أجهزة وايت ويل ، وهي تضمن لكم تقديم خدمات على أعلى مستوى بأسعار معقولة، الفنيون الذين يعملون في مركز صيانة وايت ويل مدربون على أحدث التقنيات ولديهم أحدث المعدات التشخيصية لتحديد أية أخطاء موجودة بأجهزة وايت ويل بأسرع وأدق درجة ممكنة ، قطع الغيار التى يتم استبدالها ستكون على نفس الدرجة من الجودة تماما مثل الأجزاء الأصلية التي كانت موجودة بجهاز وايت ويل ، تعمل شبكة توكيل وايت ويل لخدمات صيانة وايت ويل طبقا للمعايير المهنية وايت ويل لخدمات صيانة وايت ويل
    ، تم الحصول على موافقة معايير حمايةوخدمة المستهلك The Consumer Codes Approval التي تديرها معهد المعايير التجارية Trading Standards Institute على المعايير المهنية الخاصة بمراكز صيانة وايت ويل لحدمات صيانة أجهزة وايت ويل ، هذا التعهد تجاه العميل يمنحك راحة البال بعلمك بأنك لن تحصل فقط على أفضل خدمة فنية، وإنما أفضل خدمة عملاء أيضا، بتكلفة أقل مع أعلى معايير الخدمات الفنية وخدمة العملاء، لم لا تتصل إذن بمركز صيانة وايت ويل لخدمات صيانة أجهزة وايت ويل ؟

    صيانة جولدي
    صيانة سيمنس
    رقم تسويق الكتروني
    صيانة الاسكا
    صيانة سيمنس
    صيانة توشيبا
    صيانة دايو

    ReplyDelete
  77. Welcome to our Chennai Escorts Agency Administrations home page where you can get all the conceivable subtleties and answers to every single inquiry of yours. These Chennai Escorts including Chennai model escorts and Russian model Escorts in Chennai are constantly amusement for anything. If you visit this site, at that point you will be very shocked to have found a distinctive scope of Free Chennai Escorts They are just hypnotizing in whatever they do and will insightfully execute their activity of temptation so as to make their customer's wants run wild. They embrace every single customer calls with equivalent earnestness and accuracy so our Autonomous Independent Escorts in Chennai organization never loses its appeal and notoriety which has dependably been an indication of magnificence and accomplishment for us.

    Chennai Escorts Agency
    Independent Escorts in Chennai
    Chennai Escort
    Escorts Service in Chennai
    Call Girls in Chennai
    Chennai Escort Service
    Independent Chennai Escorts
    Russian Escorts in Chennai

    ReplyDelete
  78. https://decipherzone.com/blog-detail/Latest-Artificial-Intelligence-Trends-2019

    Latest Artificial Intelligence Trends 2019

    ReplyDelete
  79. This comment has been removed by the author.

    ReplyDelete
  80. Thank you for sharing such a great information but we are India's best service provider of Engineering Geophysics - Parsan


    Utility Detection and Mapping

    Magnetic Method Surveys

    ReplyDelete
  81. This comment has been removed by the author.

    ReplyDelete
  82. This comment has been removed by the author.

    ReplyDelete
  83. A Night of Devotion and Intimate Moments with Gurgaon Escorts

    A large number of people reside here but carry on their trades in Delhi or are employed there. The location and the richness of the history of this particular city or province added to the growth of the Call Girls services, various individuals and industries have decided to settle their business in Sushant Lok which became profitable for most of the business set up in this city most especially the Call Girls business. One of the most prominent business in Sushant Lok is the Call Girls business which became very productive owing to the city’s population and the social relationship of the people which depicts that most of the people call girls in Sushant Lok ,call girls gurgaon, gurgaon call girls, gurgaon call girls service, russian call girls in gurgaon, high profile call girls, high profile call girls in gurgaon,enjoys having fun and pleasure after various hours of work and this led to the existence of the call girls in Sushant Lok . The Call girl business has triumphed in this city and it has also developed competitiveness in its nature in terms of different call girls services with different services to offer to their various customers.

    https://www.callgirlsingurgaongirls.com/
    https://www.callgirlsingurgaongirls.com/sikanderpur
    https://www.callgirlsingurgaongirls.com/sushant-lok
    https://www.callgirlsingurgaongirls.com/call-girls-in-gurgaon
    https://www.callgirlsingurgaongirls.com/call-girls-delhi
    https://www.callgirlsingurgaongirls.com/gurgaon-call-girls
    https://www.callgirlsingurgaongirls.com/blog

    Call Girls In Gurgaon MG Road, Call +91 8587837371
    Call Girls Service in Gurgaon

    ReplyDelete
  84. Spend some quality time with our gorgeous Females

    One main component of living a fully enjoyable life can be attributed to fun and extreme pleasure, it has been conceptualized in the global world that men only get their happiness through the type of pleasure they receive in their youthful and energetic lifetime, everything in life will appear irrelevant without the right pleasurable moments. Many travels far and wide to get here, the city which is very close to the border further makes it possible for people to come in search of pleasure at the escorts service gurgaon, gurgaon escorts, gurgaon escorts service, russian escorts in gurgaon Call girls in MG Road Gurgaon. Call : +91 8587837371
    The meaning of life is mainly to get utmost and life best pleasure out of every situation in Life even if it is bad. Our society has a way of defining our type of pleasure we get and this is why we must settle and be resided in an area that can give us utmost pleasure without any limitation and this is a great example of living in MG Road call girl in Gurgaon, hotel escorts in gurgaon, college girls in gurgaon, housewifes in gurgaon with the hot sexy call girls they made available for your sexual satisfaction anytime, any day. Call : +91 8587837371

    https://www.callgirlsingurgaongirls.com/
    https://www.callgirlsingurgaongirls.com/sikanderpur
    https://www.callgirlsingurgaongirls.com/sushant-lok
    https://www.callgirlsingurgaongirls.com/call-girls-in-gurgaon
    https://www.callgirlsingurgaongirls.com/call-girls-delhi
    https://www.callgirlsingurgaongirls.com/gurgaon-call-girls
    https://www.callgirlsingurgaongirls.com/blog

    Call Girls In Gurgaon MG Road, Call +91 8587837371
    Call Girls Service in Gurgaon

    ReplyDelete
  85. We are the provider of really top class sexual offerings from all the escorts businesses situated in India and we have the awesome reputation among rest of the escorts group we've the power of erotic offerings and rub down services to our clients our call girls will never can help you down by using their sexual offerings they come to be very aggressive on the time of attractive conferences if you need that you want an experience like your wife then you are at the right abode due to the fact our call ladies will pride you want their spouses and they'll study like their men we've got a group of a few professional supervise who will provide you with a completely appropriate supervision in the direction of the intercourse edification due to the fact it is our responsibility to guide the ones customers who come to the very first time because we want that the purchaser who come to the primary time to us he should be come to us again and again because we don't need to overlook our ordinary clients we have an awesome variety of this kind of home and international women if you virtually make your life exciting sparking then you have to meet the our usually girls who will provide you the sensation like your partner to make a lifestyles with complete of entertainment and complete of enjoyment then you need to come as a minimum one time.




    Call Girls In Manali

    Call Girl In Manali

    Manali Escort

    Manali Escorts

    ReplyDelete
  86. Having a sexual encounter with a seductive call girl without any kind of specific sex acts can leave you with an experience that you get usually with your wife or girlfriend. If you need to enjoy the erotic moments uniquely in the most erotic way, it is necessary to make sure you have got experienced and professional female escorts.


    independent escorts in chennai
    chennai independent escorts
    independent escorts in chennai
    chennai escorts services
    chandigarh escorts services
    jaipur independent escorts

    ReplyDelete
  87. We are the provider of really top class sexual offerings from all the escorts businesses situated in India and we have the awesome reputation among rest of the escorts group we've the power of erotic offerings and rub down services to our clients our call girls will never can help you down by using their sexual offerings they come to be very aggressive on the time of attractive conferences if you need that you want an experience like your wife then you are at the right abode due to the fact our call ladies will pride you want their spouses and they'll study like their men we've got a group of a few professional supervise who will provide you with a completely appropriate supervision in the direction of the intercourse edification due to the fact it is our responsibility to guide the ones customers who come to the very first time because we want that the purchaser who come to the primary time to us he should be come to us again and again because we don't need to overlook our ordinary clients we have an awesome variety of this kind of home and international women if you virtually make your life exciting sparking then you have to meet the our usually girls who will provide you the sensation like your partner to make a lifestyles with complete of entertainment and complete of enjoyment then you need to come as a minimum one time.


    Call Girls In Delhi

    Call Girl In Delhi

    Delhi Escort

    Delhi Escorts

    ReplyDelete
  88. We achieve ourselves in the professional finalization of all tasks to the client's fulfilment. Our customer help is, in fact, second to none, as is our choice of first-rate abilities. We are well known VIP Manali Escorts and cell phone females Marketing Booking agent, Professional Examining and Suggestions solutions located in Manali get touching Woman Company, We offer extremely Style Manali Escorts and cell phone females for offering Growing Man. Our Manali affiliates are available to Jodhpur for all public actions outside phone telephone phone calls, such as one occasion or occasion functions, supper applications, a night at the theatre, holiday reservations holidays and company travel reservations or perhaps more adoring at home or in the place experience. Please don't think twice to offer us a message these days. We are here to get it done for you.

    Call Girls In Manali

    Call Girl In Manali

    Manali Escort

    Manali Escorts

    ReplyDelete
  89. Excellent Blog. I really want to admire the quality of this post. I like the way of your presentation of ideas, views and valuable content. No doubt you are doing great work. I’ll be waiting for your next post. Thanks .Keep it up! Kindly visit us @ Wallet Box | Perfume Box Manufacturer
    Candle Packaging Boxes | Luxury Leather Box
    Luxury Clothes Box | Luxury Cosmetics Box
    Shoe Box Manufacturer | Luxury Watch Box

    ReplyDelete
  90. Hello All Welcome To Delhi Mumbai & Chandigarh Royal Escorts .Here We Are Serving Best Hot Call Girls In Delhi Mumbai & Chandigarh.If you are looking for Delhi Mumbai & Chandigarh Services Please click below link

    Independent Escorts in Delhi

    Mumbai Escorts

    Delhi Escorts

    Chandigarh Escorts

    Independent delhi Escorts

    Independent Mumbai Escorts

    Celebrity Escorts Mumbai

    Delhi Escorts

    Delhi Escorts

    VIP Delhi Escorts

    ReplyDelete
  91. Delhi Escorts videos and photos are call girls near me easily available for desi Escort Service in Gurgaon randi bhabhi romance and Escort Service in Noida romantic bhabhi online viral hot videos at cheap free hot bhabhi viral videos video call and rates.

    ReplyDelete
  92. This comment has been removed by the author.

    ReplyDelete
  93. This comment has been removed by the author.

    ReplyDelete
  94. https://rishikeshgirls.in/

    ReplyDelete
  95. Smadav 2020 is the most recent version of Antivirus Smadav. Antivirus is rather preferred additionally from various other Antivirus. Smadav Antivirus is classified as the very best regional anti-virus ever before. Mount antivirus Smadav 2020 on your computer
    Smadav 2020 New Version
    Smadav 2020 for PC
    Smadav 2020 for Windows 10
    Smadav 2020 for Windows 8
    Smadav 2020 for Windows XP
    Smadav Antivirus Update Terbaru 2020
    Smadav 2020 update
    Smadav 2020 for Windows
    Smadav 2020 Offline Installer

    ReplyDelete
  96. Nice blog, thank you so much for sharing this informative blog. Visit Ogen Infosystem for the best Website Designing and Development Services in Delhi, India. Also get Digital Marketing Services like PPC, SEO, Social Media Optimization etc.
    Web Design Company in Delhi

    ReplyDelete
  97. This comment has been removed by the author.

    ReplyDelete
  98. COLLEGE CALL GIRLS IN RISHIKESH

    Warm welcome to Call girls in Rishikesh service. We are Rishikesh’s most trusted escorts services provider. If you are looking for Most Beautiful, hot & sexy independent Escort than you are at a right place. We have a variety of female escorts services in Rishikesh. We provide High Profile Model, TV actress, Air Hostess, Russian Escort roorkee, college girls and Independent call girls in Rishikesh, Dehradun, Mussorie, Haridwar & Roorkee. We Offer our services at clients proposed locations whether it is a Hotel, Motel or resorts and promised for 100 % satisfactory & plenty services.
    Everyone have a desire to make love with Beautiful, Hot , sexy , frank and well educated kind of lady. We love them for their cool personality and Hot figure. We are well known for these kind of call girls. Our professional escorts does not hesitate to play any role as per your desire. Every call girl in our agency, is well educated and from pooch background.

    Our call girls in Rishikesh professionals can please you physically and Emotionally.
    we can understand that a high profile men require another joyful and dazzling life other than there real one when they are Out of station away from their life partner. we always take care of personal life of our valuable clients and do not mix our Call girls in Rishikesh with their personal life. We Only provide momentary relax and pleasure to Our valuable client to remove the depression and dullness. Our well professional Call Girls in Rishikesh know how to show a heavenly feeling to our valuable clients.

    Rishikesh call girls
    call girls in haridwar
    call girls in rishikesh
    call girls in dehradun
    call girls in gurgaon
    call girls in agra
    need help
    call girls in dwarka
    Call girls in Dwarka
    services

    For whatsup Number Open this website

    ReplyDelete
  99. Rajasthan Subordinate and Ministerial Service Selection Board (RSMSSB) invites the notification of Patwari Recruitment 2019. According to the Department the Department releases the official notification in the month of July.
    Rajasthan Patwari Bharti 2019
    Rajasthan Patwari Recruitment 2019
    Rajasthan Patwari Vacancy 2019
    Rajasthan Patwari Bharti News 2019

    ReplyDelete
  100. Whether it is about eliminating mental stress or entering into a lusty world, you always need hot call girls.
    Bangalore Escort
    Escorts in Bangalore
    Escort Service in Bangalore
    Bangalore Escorts

    ReplyDelete
  101. Very Helpful and informative blog! Keep sharing such blogsSoftware Development Company in India

    ReplyDelete
  102. Independent escorts are those who work for us and are available 24*7 all day and night for you. In other agencies, escort services are limited to some point of giving you pleasures. Where you have to pay extra for more after a limited period of time you choose while booking. Because of paying extra you have to go home alone again without having the full pleasure satisfaction. Unlike other agencies we are not like that, just like our services are available 24*7 you can ask or request our Jaipur call girls to give you more. By any chance, our escorts are not going to say no for you wants and desire.
    Independent Escorts

    ReplyDelete
  103. لیزر موهای زائد به یکی از پرطرفدارترین روش های رفع موهای ناخواسته بدن تبدیل شده است که در سال های اخیر تقاضا براى لیزر موهای زائد افزايش زیادی داشته است. که باعث خلاص شدن از سالن های اپیلاسیون، تیغ، مومک، موبر و دستگاه اپیلیدی همچنین جوش ها و موهای زیر پوستی می شود. اما لیزر موهای زائد مانند هر تكنولوژى جديدی كه ممكن است مورد سوء استفاده قرارگيرد بسيارى ازكساني كه بدون مطالعه قبلى و صرفاً براساس تبليغات يا قيمت ارزانتر، اقدام به انجام لیزر موهای زائد كردند را مأيوس كرده است. در اين مقاله سعى داریم تا با ارائه اطلاعات مهم دراين زمينه و معرفى روش صحيح انتخاب مركز مناسب براى انجام ليزر موى زائد مانع تكرار تجربه تلخ از دست دادن پول و وقت و از همه مهمتر سلامتی خود را به خطر بیندازیم.

     
    چرا کلینیک لاغری
    امروزه با توجه به شرایط نامطلوب سلامت جسمانی و روحی از جمله افسردگی، نداشتن مهارت در روابطهای فردی، کم تحرکی، تغذیه ناسالم در جامعه بروز بیماریهای روحی، فلبی عروقی، گوارشی و … افزایش یافته است. داشتن عادات نامطلوب غذایی و نداشتن تحرک و ورزش و نشاط کافی در زندگی روزمره منجر به اختلالات متابولیک مثل چاقی و نداشتن اندامی متناسب و در نتیجه ایجاد بیماریهای مختلف است.

    امروزه متخصصین و پزشکان کلینیک لاغری برای حل این مشکل که در برخی از افراد به معضلی غیرقابل حل بدل شده، راهکارهای نو و به روزی را پدید آوردند و بدین وسیله افراد را یک قدم به رویای خود یعنی تناسب اندام نزدیک گردند.

     

    مطالعات جدید نشان می دهد که کمیت و کیفیت زندگی ما با نحوه تغذیه ما ارتباطی تنگاتنگ دارد. تغذیه نه تنها در پیشگیری و درمان بیماری ها نقش بازی می کند، بلکه در خلق و خو، روحیه، نگرش و اخلاق و رفتار هر یک از ما نیز نقش دارد. عملکرد ذهن و مغز ما نتیجه ترشح موادی در مغز است که تغذیه بر تولید و ترشح آنها اثر قابل توجهی دارد. نتایج تحقیقات جدید در زمینه تغذیه باعث شده که نگرش متخصصان و پژوهشگران نسبت به علم تغذیه و کلینیک تغذیه بسیار تغییر نماید.

     

    آیا شما هم در حال حاضر با مشکلاتی از قبیل پیری و افتادگی پوست، لک روی صورت، غبغب (چانه دوم) یا خط اخم مواجه هستید؟ آیا قصد دارید این عوارض را به حال خود رها کنید تا روز به روز بدتر و شدیدتر شوند؟ نگران نباشید با روشی بسیار کم تهاجم لیفت صورت با نخ به پزشک شما اجازه می دهد با هنری ویژه پوستتان را فقط در ۲۰ دقیقه بالا بکشد. این تکنولوژیِ خارق العاده اما واقعی بوده و پنجره ای تازه را در علم زیبایی رو به شما باز نموده است. این تکنیک لیفتینگ با نخ هیچ گونه اسکاری بر جای نگذاشته و به شکلی موفقیت آمیز در تمام نواحی صورت و گردن قابل استفاده بوده و ظاهری جوانتر به فرد می دهد.

    ReplyDelete
  104. کاربران شبکه‌ اجتماعی روزبه‌روز درحال افزایش‌ هستند خرید ممبر تلگرام و بسیاری از مردم زمان نسبتا قابل توجهی را به فعالیت و استفاده از این شبکه‌ها اختصاص داده‌اند، به همین دلیل، موج عظیمی از تبلیغات اعم از تبلیغات در تلگرام، اینستاگرام و دیگر شبکه‌های اجتماعی نیز ایجاد شده است. طبیعی است که جریان تبلیغات و بازاریابی به هر سمتی که برود، آنجا فرصت خوبی برای کسب درآمد به وجود می‌آید. تیم تلگرام ممبر با امکان فروش انواع ممبر تلگرام و فالوور اینستاگرام خرید ممبر تلگرام بستر فضای کسب و کار شبکه های اجتماعی نظیر تلگرام و اینستاگرام را با فروش ممبر تلگرام و... گسترش و رشد کسب و کار شما را تسریع می بخشد.

    اگر شما صاحب کسب وکار هستین و قصد گسترش کسب کار خود را دارید. شبکه های اجتماعی نظیر تلگرام و اینستاگرام بستر مناسبی برای رشد کس و کار شما هست. چرا که این روزه بیشتر مردم اوقات خود را در شبکه های اجتماعی سپری می کنند. با با فعالیت در این شبکه های اجتماعی نظر کاربران را به کسب و کار خود جلب کنید.

    ReplyDelete
  105. سقط جنین به معنی فقدان جنین تا قبل از حدودا هفته بیستم بارداری است ولی پزشکان اکثرا از این واژه ها برای توصیف هر نوع خاتمه دادن به حاملگی در سه‌ماهه اول بارداری استفاده می‌کنند.برای خرید قرص سقط جنین و خرید قرص سایتوتک یا خرید قرص میزوپروستول با شماره ۰۹۰۵۹۵۲۶۹۴۴ تماس بگیرید.

    در نه هفته اول بارداری معمولا مصرف دارو خوب و جوابگوست . پزشک ممکن است برای شما داروی خرید قرص میزوپرستول را تجویز کند که هورمون پروژسترون را سد کرده که این هورمون ضروری برای بارداری است و باعث ضخیم شدن دیواره رحم میشود. داروها با ایجاد انقباضات شدید رحمی باعث خونریزی و ختم بارداری می‌شوند. خونریزی ایجاد‌ شده به‌ دنبال خرید قرص سایتوتک معمولاً نه تا شانزده روز ادامه دارد. معمولا علائمی نظیر تهوع، استفراغ، اسهال، تب و لرز و خستگی زیاد طی این مدت در بیمار ظاهر می‌شود كه خودبه‌خود از بین می‌رود. پس از سپری شدن این زمان، معاینه و بررسی‌های كامل لازم است تا اطمینان حاصل شود كه سقط كامل صورت گرفته است. در تعداد بسیار كمی از زنان، روش سقط دارویی به سقط نمی‌انجامد و نیاز به انجام اقدامات دیگری است.

    ReplyDelete
  106. سقط جنین به معنی فقدان جنین تا قبل از حدودا هفته بیستم بارداری است ولی پزشکان اکثرا از این واژه ها برای توصیف هر نوع خاتمه دادن به حاملگی در سه‌ماهه اول بارداری استفاده می‌کنند.برای خرید قرص سقط جنین و خرید قرص سایتوتک یا خرید قرص میزوپروستول با شماره ۰۹۰۵۹۵۲۶۹۴۴ تماس بگیرید.

    همچنین سقط جنین، به معنای اتمام بارداری در هر مرحله‌ای است که زندگی جنین جریان دارد می‌باشد، اگرچه غالباً، پایان یافتن بارداری توسط عمل جراحی یا بیرون آوردن جنین یا رویان  را سقط جنین می‌گویند. مرگ جنین اگر بشکل خود به خود رخ دهد به آن سقط خودبه‌خودی (ناخواسته) میگویند.

    در سالهای گذشته بیشتر از آمپول های عضلانی مثل اکسی توسین و پروستاگلندین برای سقط جنین در سه ماهه اول بارداری استفاده می شد.اما با روی کار آمدن دارو های غیر تزریقی و کم عارضه تر مثل میزوپرستول Misoprostol با نام تجاری سایتوتک Cytotec درد سر این فرایند کاهش یافت.

    قرص های میزوپروستول خرید قرص میزوپروستول با نام تجاری سیتوتک یا سایتوتک Cytotec خرید قرص سایتوتک به شکل قرص خوراکی ۲۰۰ میکروگرمی وجود دارد و اولین بار از آن برای درمان زخمهای معده استفاده شده است. در یک تحقیق مشخص شد که مصرف حداکثر ۶۰۰ میکروگرم آن بصورت واژینال و یا ۸۰۰ گرم آن بصورت خوراکی تا ۹۵ درصد باعث سقط جنین در ۳ ماهه اول بارداری می شود.میزوپروستول با نام میزوتک یا میزو گلندین در قالب قرص های 100 و 200 میکروگرمی در ایران تولید میگردد نام تجاری آن سیتوتک یا سایتوتک می باشد که می توانید به صورت خرید اینترنتی قرص سقط جنین تهیه کنید.

    ReplyDelete
  107. Alkhadim LLC will take care of your Online Bookkeeping Services , Accounting, TAX & Financial services so you can focus on growing your business.

    ReplyDelete

  108. سقط جنین غیرعمدی، خارج کردن ناخواسته  جنین پیش از هفتهٔ تقریبا ۲۰ بارداری است. اگر بارداری پیش از ۳۷ هفته خاتمه یابد و باعث تولد نوزادی زنده گردد، «تولد پیش از موعد» تلقی می‌شود. جنینی که پس از حیات یافتن، در رحم بمیرد، عموماً با اصطلاح «جنین مرده» شناخته می‌شود. تولد پیش از موعد و زایمانِ جنین مرده، عموماً سقط جنین تلقی نمی‌شوند، اگرچه استفاده از این اصطلاحات گاهی با یک‌دیگر هم‌پوشانی پیدا می‌کند. تنهاسی تا پنجاه درصد از لقاح‌ها، ۳ماهه اول را با موفقیت پشت سر می‌گذارند، حجم خیلی زیادی از این دسته از لقاح‌ها که به ثمر نمی‌رسند، قبل از آن‌که زن از لقاح خود آگاه شده باشد، از بین می‌روند و خیلی از بارداری‌ها قبل از آنکه پزشکان قادر به تشخیص جنین را داشته باشند پایان می‌یابند. در بررسی از حداقل پنجاه درصد از بارداری‌های زود خاتمه یافته، عمده ترین دلیل سقط جنینِ ناخواسته در طول ۳ماهه اول بارداری، اختلالات کروموزومی است، از جمله سایر دلایل می‌توان به بیماری‌های عروقی، دیابت، سایر مشکلات هورمونی، عفونت و…. اشاره کرد. افزایش سن مادر و سابقه بیمار در سقط غیرعمدی، به عنوان دو عامل اصلی مرتبط با افزایشِ خطر پذیری سقطِ غیرعمدی شناخته می‌شوند. سقط جنین غیرعمدی، هم‌چنین ممکن است در نتیجه ضربه اتفاقی نیز رخ دهد.

    بهترین را برای سقط جنین عمدی استفاده از قرص سقط جنین سایتوتک است. که جهت خرید قرص سقط جنین با شماره 09335032107 توکل تماس بگیرید. دیگر عواملی که باعث سقط جنین می شود را در زیر لیست کردیه ایم.

     

    در نه هفته اول بارداری معمولا مصرف دارو خوب و جوابگوست . پزشک ممکن است برای شما داروی خرید قرص میزوپرستول را تجویز کند که هورمون پروژسترون را سد کرده که این هورمون ضروری برای بارداری است و باعث ضخیم شدن دیواره رحم میشود. داروها با ایجاد انقباضات شدید رحمی باعث خونریزی و ختم بارداری می‌شوند. خونریزی ایجاد‌ شده به‌ دنبال خرید قرص سایتوتک معمولاً نه تا شانزده روز ادامه دارد. معمولا علائمی نظیر تهوع، استفراغ، اسهال، تب و لرز و خستگی زیاد طی این مدت در بیمار ظاهر می‌شود كه خودبه‌خود از بین می‌رود. پس از سپری شدن این زمان، معاینه و بررسی‌های كامل لازم است تا اطمینان حاصل شود كه سقط كامل صورت گرفته است. در تعداد بسیار كمی از زنان، روش سقط دارویی به سقط نمی‌انجامد و نیاز به انجام اقدامات دیگری است.

    ReplyDelete
  109. سقط جنین به معنی فقدان جنین تا قبل از حدودا هفته بیستم بارداری است ولی پزشکان اکثرا از این واژه ها برای توصیف هر نوع خاتمه دادن به حاملگی در سه‌ماهه اول بارداری استفاده می‌کنند.برای خرید قرص سقط جنین و خرید قرص سایتوتک یا خرید قرص میزوپروستول با شماره ۰۹۰۵۹۵۲۶۹۴۴ تماس بگیرید.

    در نه هفته اول بارداری معمولا مصرف دارو خوب و جوابگوست . پزشک ممکن است برای شما داروی خرید قرص میزوپرستول را تجویز کند که هورمون پروژسترون را سد کرده که این هورمون ضروری برای بارداری است و باعث ضخیم شدن دیواره رحم میشود. داروها با ایجاد انقباضات شدید رحمی باعث خونریزی و ختم بارداری می‌شوند. خونریزی ایجاد‌ شده به‌ دنبال خرید قرص سایتوتک معمولاً نه تا شانزده روز ادامه دارد. معمولا علائمی نظیر تهوع، استفراغ، اسهال، تب و لرز و خستگی زیاد طی این مدت در بیمار ظاهر می‌شود كه خودبه‌خود از بین می‌رود. پس از سپری شدن این زمان، معاینه و بررسی‌های كامل لازم است تا اطمینان حاصل شود كه سقط كامل صورت گرفته است. در تعداد بسیار كمی از زنان، روش سقط دارویی به سقط نمی‌انجامد و نیاز به انجام اقدامات دیگری است.

     

    خرید قرص سقط جنین

    خرید قرص سقط جنین

    ReplyDelete
  110. مطالعات جدید نشان می دهد که کمیت و کیفیت زندگی ما با نحوه تغذیه ما ارتباطی تنگاتنگ دارد. تغذیه نه تنها در پیشگیری و درمان بیماری ها نقش بازی می کند، بلکه در خلق و خو، روحیه، نگرش و اخلاق و رفتار هر یک از ما نیز نقش دارد. عملکرد ذهن و مغز ما نتیجه ترشح موادی در مغز است که تغذیه بر تولید و ترشح آنها اثر قابل توجهی دارد. نتایج تحقیقات جدید در زمینه تغذیه باعث شده که نگرش متخصصان و پژوهشگران نسبت به علم تغذیه و کلینیک تغذیه بسیار تغییر نماید.

     

    آیا شما هم در حال حاضر با مشکلاتی از قبیل پیری و افتادگی پوست، لک روی صورت، غبغب (چانه دوم) یا خط اخم مواجه هستید؟ آیا قصد دارید این عوارض را به حال خود رها کنید تا روز به روز بدتر و شدیدتر شوند؟ نگران نباشید با روشی بسیار کم تهاجم لیفت صورت با نخ به پزشک شما اجازه می دهد با هنری ویژه پوستتان را فقط در ۲۰ دقیقه بالا بکشد. این تکنولوژیِ خارق العاده اما واقعی بوده و پنجره ای تازه را در علم زیبایی رو به شما باز نموده است. این تکنیک لیفتینگ با نخ هیچ گونه اسکاری بر جای نگذاشته و به شکلی موفقیت آمیز در تمام نواحی صورت و گردن قابل استفاده بوده و ظاهری جوانتر به فرد می دهد.

     

     

    پیدا شدن خطوط ریزودرشت و یا به اصلاح چین‌وچروک در صورت و سیاهی دور چشم و افتادگی ابروها برروی چشم نشانه افزایش سن و القای حس پیری در آدمی می‌باشد. و انسانی که ذاتاً طالب زیبایی است از زمانهای دور در فکر چاره‌ای برای حل این مشکل بوده است.

    با عمل چانه از طریق بوتاکس یکی از روش‌های درمان چین و چروک‌های پوستی است که بسیار محبوب و ایمن است و اثر بخشی آن همچون لیفت ابرو برای بهبود افتادگی ابروها و لیفت سینه جراحی زیبایی به اثبات رسیده است. تزریق بوتاکس چانه به طور کاملا آشکاری چروک‌های پوستی را از بین می‌برد و پوست صورت را صاف می‌کند. در این روش همچنین با جلوگیری از فعالیت بیش از حد ماهیچه‌های صورت، از تشکیل برخی خطوط و چین‌ها در صورت جلوگیری می‌شود، درحالی که هیچ یک از حالات طبیعی که فرد به چهره خود می‌گیرد دچار اختلال نمی‌شود.

    ReplyDelete
  111. freight forwarder china to Canada
    We are a freight forwarder company and we give services for shipping from china to other countries in all over the world.
    freight forwarder china to usa
    freight forwarder china to usa Europe
    You can see our low pricing and high pleasure of our customers in our testimonial.
    Shipping from china to Canada
    Give us a chance if you are looking for a sea freight forwarder as well as other methods of shipping. We do our best to make you our loyal customer.
    sea freight from usa to china

    ReplyDelete
  112. سقط جنین به معنی فقدان جنین تا قبل از حدودا هفته بیستم بارداری است ولی پزشکان اکثرا از این واژه ها برای توصیف هر نوع خاتمه دادن به حاملگی در سه‌ماهه اول بارداری استفاده می‌کنند.برای خرید قرص سقط جنین و خرید قرص سایتوتک یا خرید قرص میزوپروستول با شماره ۰۹۰۵۹۵۲۶۹۴۴ تماس بگیرید.

    پس از خرید قرص سقط جنین در نه هفته اول بارداری معمولا مصرف دارو خوب و جوابگوست . پزشک ممکن است برای شما داروی خرید قرص میزوپرستول را تجویز کند که هورمون پروژسترون را سد کرده که این هورمون ضروری برای بارداری است و باعث ضخیم شدن دیواره رحم میشود. داروها با ایجاد انقباضات شدید رحمی باعث خونریزی و ختم بارداری می‌شوند. خونریزی ایجاد‌ شده به‌ دنبال خرید قرص سایتوتک معمولاً نه تا شانزده روز ادامه دارد. معمولا علائمی نظیر تهوع، استفراغ، اسهال، تب و لرز و خستگی زیاد طی این مدت در بیمار ظاهر می‌شود كه خودبه‌خود از بین می‌رود. پس از سپری شدن این زمان، معاینه و بررسی‌های كامل لازم است تا اطمینان حاصل شود كه سقط كامل صورت گرفته است. در تعداد بسیار كمی از زنان، روش سقط دارویی به سقط نمی‌انجامد و نیاز به انجام اقدامات دیگری است.

     

    خرید قرص سقط جنین

    خرید قرص سقط جنین

    ReplyDelete
  113. Call/Whatsapp +971503735841 Hi, I am Jhan-Vipatel 23 year old girl, who offer the VIP Indian Dubai Independent Escorts service, I am Available 24X7. I'm also providing the all kind of service
    Dubai Female Escorts
    Dubai Independent Escorts
    Dubai Escorts

    ReplyDelete
  114. Nice blog, thank you so much for your efforts. If you are looking for a creative web designer in Delhi, ogen infosystem provides one of the best and professional web designing services in delhi, India.
    Top 5 Website Designing Company in India

    ReplyDelete
  115. If you want to get instant loans in Ireland then Everyhourloans is the best option.Come in here as soon as possible.
    EveryHourLoans

    ReplyDelete
  116. If you want to get instant loans in Ireland then Everyhourloans is the best option.Come in here as soon as possible.
    EveryHourLoans

    ReplyDelete
  117. Nice blog, visit Mutualfundwala for Best Performing Mutual Fund and Mutual Fund Advisor.
    Best Performing Mutual Fund

    ReplyDelete
  118. I am open-minded and cater to most dreams. Cute, cuddly, curvy, classy, and user-friendly, I like giving and receiving. Short and fun adventures and long dinner dates, including overnights and travel companionship, are available.
    Bangalore Escorts
    Bangalore Escorts
    Bangalore Escorts
    www.3dwarehouse.sketchup.com/by/KennedyJohnston

    ReplyDelete


  119. Hi I am nisha sharma a beautiful Delhi Escorts who is ready to give you high quality of fun and unstoppable service without any restriction. I am a well-educated and

    the best immense love provider where I can also show you every sexual drive which gives you the best love feelings and once you did the best sensual love with me, you

    always wait for the next meet
    http://callgirldelhincr.com/
    http://www.dwarkaescorts.co.in
    http://www.mahiescorts.com
    http://www.sofiyaescortschandigarh.com/
    http://wwww.chandigarhescorts.co.in
    http://wwww.rohiniescorts.com

    ReplyDelete
  120. I try to find information about this related topic, and I’m glad to see this. Thanks for this valuable information sharing with us. Visit Mutualfundwala for Mutual Funds India and Investment Advisor in Delhi.
    Investment Advisor in Delhi

    ReplyDelete
  121. We provide cost- effective Business Accounting Services leveraged by our extensive experience of local business and a high level of personal involvement.

    ReplyDelete

  122. Hi I am mahi vrma a beautiful Escorts who is ready to give you high quality of fun and unstoppable service without any restriction. I am a well-educated and the best

    immense love provider where I can also show you every sexual drive which gives you the best love feelings and once you did the best sensual love with me, you always

    wait for the next meet..

    Amritsar Escorts
    Escorts In Amritsar
    Surat Escorts
    Escorts In Surat

    ReplyDelete
  123. Hello i am Siddhi sharma If u want kullu-manali escorts model like me in your city then i am available here for you. Hi I am a model , I am young smart and well

    educated Independent Girl Available for fulfill all your needs.
    I am a natural brunette, slim body, natural long hair ,ready to serve you the best of you want. So, Don't think so much just contact me and be ready to meet Me.

    http://kullumanaliescort.in

    ReplyDelete
  124. افضل شركة الصيانة , صيانة اجهزة منزلية
    هنا تجدوا جميع الامكانيات المتاحة لعمل صيانة كريازي
    صيانة اريستون
    ا صيانة ال جي
    صيانة وايت ويل
    صيانة زانوسي
    صيانة سامسونج

    المنزلية الشاملة و بدرجة امتياز صيانه وايت بوبنت بنها بقطع غيار اصلية و بأذون مخزن معتمدة من التوكيل المعتمد
    لصيانة صيانة وايت بوينت
    في دولة جمهورية مصر العربية العربية .
    يقوم بإجراء الصيانة فريق عمل من مهندسين و فنيين مدربين من مركز صيانة يونيفرسال
    طلخا باسطول من السيارات لخدمة صيانة وايت بوبنت المنتشرة في جميع محافظات دولة جمهورية مصر العربية العربية او بالمركز الرئيسي صيانة وايت بوينت
    بالعاصمة المصرية القاهرة عاصمة جمهورية مصر العربية.
    شركة MK
    للتسويق الالكتروني
    شركة تسويق الكتروني
    01015375663 واتس اب

    ReplyDelete
  125. افضل شركة الصيانة , صيانة اجهزة منزلية
    هنا تجدوا جميع الامكانيات المتاحة لعمل صيانة كريازي
    صيانة اريستون
    ا صيانة ال جي
    صيانة وايت ويل
    صيانة زانوسي
    صيانة سامسونج

    المنزلية الشاملة و بدرجة امتياز صيانه وايت بوبنت بنها بقطع غيار اصلية و بأذون مخزن معتمدة من التوكيل المعتمد
    لصيانة صيانة وايت بوينت
    في دولة جمهورية مصر العربية العربية .
    يقوم بإجراء الصيانة فريق عمل من مهندسين و فنيين مدربين من مركز صيانة يونيفرسال
    طلخا باسطول من السيارات لخدمة صيانة وايت بوبنت المنتشرة في جميع محافظات دولة جمهورية مصر العربية العربية او بالمركز الرئيسي صيانة وايت بوينت
    بالعاصمة المصرية القاهرة عاصمة جمهورية مصر العربية.
    شركة MK
    للتسويق الالكتروني
    شركة تسويق الكتروني
    01015375663 واتس اب

    ReplyDelete
  126. We offer professional and affordable seo services india that help websites improve their organic search score drastically in order to compete for the highest rankings.
    From,
    seo expert in india

    ReplyDelete
  127. Bangalore Escorts Service
    One of Most Desired Independent Bangalore Escorts Service and High Profile Escorts Service in Bangalore
    Meet the most beautiful busty babe in Bangalore. Come and explore the miracle of ripening breasts (adorned with attractive bust line) and deep romantic chasm dedicated to offering you limitless love and amour.
    call girls in Bangalore

    Call Girls Escort Service In Bangalore

    VIP Call Girls In Bangalore

    Independent Female Model

    Bangalore Escorts Services

    Independent Female Escorts Services

    Bangalore cool girls

    outcall Bangalore

    massage at Bangalore

    phone sex service

    locanto Bangalore

    locanto bommanahalli

    red light area in Bangalore

    hotel girls service in Bangalore

    call girls list Bangalore

    Bangalore ladies massage

    independent housewife in bangslore

    get girls in Bangalore

    call girlfriend relationship Bangalore

    sexy toys in Bangalore

    skokka Bangalore girls

    skokka in bommanahalli

    skokka in marathahalli

    skokka in jpnagar

    Tamil real girls

    hot woman pg girl in Bangalore

    kerala malayali girls in Bangalore

    popular massage service in Bangalore

    Escort service in Bangalore
    Bangalore escort service
    Escort Bangalore
    Bangalore girls
    Bangalore Escort
    Independent girls in Bangalore
    Bangalore city girls
    russian escort service in Bangalore
    russian escorts in Bangalore
    vip escorts Bangalore
    top call girls in Bangalore
    vip call girls in Bangalore
    Bangalore escorts call girls
    Escort service Bangalore

    ReplyDelete
  128. With Sanjay Baghela, your business Website is in safe hands. He and his team are the best SEO Expert in India the leading digital marketing field. They work with the most trusted & advanced SEO strategies and tools to deliver the results, which you are expecting from the team. The Freelance Seo Expert In India of Sanjay Badhela is serving their SEO solutions and best known as the best SEO Consultant across the globe. You can Hire Seo consultant anytime from the team of best Freelance Seo Expert and can discuss the things to get better for your online business promotion.
    Best SEO Expert In India and BEST SEO Company

    ReplyDelete
  129. Nice post..

    Chandigarh escort carrier with a purpose to provide you the satisfaction of taste so far, you may pick out the fine. They are saying the humans within the city of Chandigarh and the way to make you feel like the happiest guy in the global
    Follow Us:_
    Chandigarh escorts
    Chandigarh escorts service

    VIP Chandigarh escorts
    Chandigarh Escort service

    Escorts service in Chandigarh
    Call girls in Chandigarh

    ReplyDelete
  130. LUXURY WITHIN GRASP – HANDMADE LEATHER WALLETS


    Cicero Leather is a family of leathersmiths who love to create handmade leather products. The inspiration of our products comes from the values we stand for

    As designers and manufacturers the best handmade leather wallets for men, we believe that our values lie in our responsibility to offer customers the highest quality and luxurious designed products at the most affordable prices.


    Our products set out to break the traditional luxury mark-ups while retaining its high quality. These are the values we will strive to pursue to create the best products.

    All of our leather goods are made using premium smooth calf leather. Our designs include traditional handmade men’s leather wallets, handmade leather wallets, front pocket wallets and men’s bifold wallet.

    Every item we make is a unique, one of a kind masterpiece. The number one difference that sets Cicero Leather high above their competition, we make wallets because we love making people smile.


    ENJOY COMPLIMENTARY STANDARD FREE SHIPPING IN THE UNITED STATE OF AMERICA

    ReplyDelete
  131. Muskan Khanna an independent high profile escort in Chennai to fulfil your desires, Contact me for Russian escorts 24X7 anywhere in Chennai.

    ReplyDelete
  132. LUXURY WITHIN GRASP – HANDMADE LEATHER WALLETS


    Cicero Leather is a family of leathersmiths who love to create handmade leather products. The inspiration of our products comes from the values we stand for


    As designers and manufacturers the best handmade leather wallets for men, we believe that our values lie in our responsibility to offer customers the highest quality and luxurious designed products at the most affordable prices

    Our products set out to break the traditional luxury mark-ups while retaining its high quality. These are the values we will strive to pursue to create the best products.

    All of our leather goods are made using premium smooth calf leather. Our designs include traditional handmade men’s leather wallets, handmade leather wallets usa, front pocket wallets and men’s bifold wallet.

    Every item we make is a unique, one of a kind masterpiece. The number one difference that sets Cicero Leather high above their competition, we make wallets because we love making people smile


    ENJOY COMPLIMENTARY STANDARD FREE SHIPPING IN THE UNITED STATE OF AMERICA

    ReplyDelete
  133. Tony: Besides the VM performance, syntax and legacy details, what do you think about the Concurrency model of Clojure vs. the one in Erlang? I think Clojure syntax is cleary better than Erlang, but I'm not so sure on the Concurrency model.

    Best Regards
    Prempal Singh
    SEO Expert | SEO Freelancer

    ReplyDelete
  134. We have high-class female models who are always ready to assist their clients’ needs and desires and to make them feel relax and comfortable when they are with them.

    noida escorts
    call girls in gurgaon
    noida escort service
    gurgaon escorts service

    ReplyDelete
  135. "There’s one simple test for determining whether a company is really an SEO expert: fire up a search engine and put their rankings to the test. If they claim to offer professional SEO services and can’t manage to rank their own company for some of the top keywords, are you really confident they can help you?
    Go ahead – Google “SEO Professionals” right now. You’ll find we’re in the top first-page results. That’s also true if you Google “SEO Experts” , “Professional SEO Company” or “search engine optimization experts”"
    best seo expert in india

    ReplyDelete