<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="35278" data-post-id="35278">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="brightball" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brightball/120/17192_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  brightball
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for taking the time to break it down.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="35278" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/63">Post #62</a>
	                </div>
	            </div>
              <div id="likers-container-35278" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="35278"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #62"></div>
  </section>
</div>
    <div class="postbit" id="35287" data-post-id="35287">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-post-not-found" data-username="kseg" data-post="50" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kseg/48/6178_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/50" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>Sounds to me like you’re a fan of the benchmarks that show Phoenix in a good light and not so much those that show it in a bad light.</p>
</blockquote>
</aside>
<p>I’m sorry you have that impression, b/c that’s not what I’m saying. I wouldn’t have any better opinion about TE even if Phoenix was the winner in all categories.</p>
<aside class="quote no-group quote-post-not-found" data-username="kseg" data-post="50" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kseg/48/6178_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/50" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>The 2M connection is basically testing Linux.</p>
</blockquote>
</aside>
<p>If you take a look at <a href="http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections" rel="nofollow">the post</a> you’ll see that it was a bench which uncovered a couple of issues in Phoenix. Prior to that test, Phoenix was breaking at some 40k connections. So the test was useful to discover those issues and fix them.</p>
<aside class="quote no-group quote-post-not-found" data-username="kseg" data-post="50" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kseg/48/6178_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/50" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>Apparently when a benchmark “demonstrates” that Phoenix doesn’t add much overhead, that’s a good benchmark. If it demonstrates that it adds a lot of overhead, well..the benchmark is flawed</p>
</blockquote>
</aside>
<p>The Phoenix bench also initially demonstrated the flaw in Phoenix, and yet I still like it. What I like about it is that it has a very clear focus, and that it doesn’t fall into a trap of comparing stacks based on a number. TE is the complete opposite, with the update test being extremely contrived, and with the ranking of stacks based on some number being very shallow.</p>
<aside class="quote no-group quote-post-not-found" data-username="kseg" data-post="51" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kseg/48/6178_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/51" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>There’s two groups of people in this conversation about performance: those that think performance could be improved and those that want to talk about everything except performance.</p>
</blockquote>
</aside>
<p>Performance can always be improved, but we need properly focused tests for that. The update test is IMO not such test.</p>
<aside class="quote no-group quote-post-not-found" data-username="kseg" data-post="51" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kseg/48/6178_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/51" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>Wrapping the outer handler in a try/catch is neither difficult nor a challenge. Which is why net/http does it: <a href="https://github.com/golang/go/blob/master/src/net/http/server.go#L1690" class="inline-onebox" rel="noopener nofollow ugc">go/src/net/http/server.go at master · golang/go · GitHub</a></p>
</blockquote>
</aside>
<p>The difficult/challenging part is that you need to do this in every goroutine you spawn. Even then, if there’s an unhandled panic in a goroutine started by some dependency, the system will fail. Another problem is that because of the mutable shared data, you might end up with inconsistent state and further bugs. I’m not saying that it’s impossible to work with those properties, but rather that it’s harder. You need to pay more attention, but no matter how much attention you pay, some risks never fully disappear.</p>
<p>While in Erlang fault-tolerance doesn’t happen by magic, in many cases it’s ensured by the basic properties of the runtime. When I was working on my first system, I was frequently surprised how the system survived various individual crashes and self-healed, even if I didn’t plan for it. The tech had my back when I didn’t. This is something I can’t put a number to. But I can say that I was (and still am) very grateful to learn how much a tech helps me making my systems more resilient.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="35287" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/64">Post #63</a>
	                </div>
	            </div>
              <div id="likers-container-35287" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="35287"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #63"></div>
  </section>
</div>
    <div class="postbit" id="35288" data-post-id="35288">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kseg" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kseg/120/6178_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kseg
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Phoenix-Core-Team quote-post-not-found" data-username="chrismccord" data-post="52" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrismccord/48/24233_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/52" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>This is just not true.</p>
</blockquote>
</aside>
<p>I stand corrected. I’m not sure why I got that impression. I should have double checked first. Thank you.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="35288" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/65">Post #64</a>
	                </div>
	            </div>
              <div id="likers-container-35288" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="35288"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #64"></div>
  </section>
</div>
    <div class="postbit" id="35291" data-post-id="35291">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="49" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/49" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>Sure, but then the question becomes how much do these properties matter in practice (i.e., how much more reliability do they really buy, and at what cost)?</p>
</blockquote>
</aside>
<p>Exactly! And this is something you can decide for your particular case.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="49" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/49" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>Ultimately, I think you need to see real measurements to confirm expectations based on analysis.</p>
</blockquote>
</aside>
<p>And this is where I think is the core difference between our opinions. You seem to think that you can somehow assign a number to <code>foo</code> and <code>bar</code>, and then pick one based on that number, whereas I argue that it’s nowhere near as simple as that, and that most likely a number-based comparison is going to be very shallow and misleading.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="49" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/49" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>An analysis of the properties of the runtime would be less compelling if we couldn’t also point to examples like the famed nine nines of uptime.</p>
</blockquote>
</aside>
<p>Nine-nines is mostly shallow marketing, so let’s skip that. The fact is that people have been making highly available systems in various technologies, so it’s definitely doable with or without Erlang. The question is however, how much a particular tech helps you with that. My experience is that Erlang helps a lot, thus making that difficult job easier. However, I cannot quantify that into a number.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="49" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/49" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>You indicated that in your own initial evaluation of Erlang, you tested it out – you didn’t pick it blindly after merely analyzing its properties.</p>
</blockquote>
</aside>
<p>Precisely, but the point of that test was to verify that Erlang is capable of handling my load. It wasn’t a comparison of Erlang to other stacks, but merely a verification that the stack is capable for what I needed.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="49" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/49" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>That doesn’t mean they can’t provide value when used appropriately.</p>
</blockquote>
</aside>
<p>I’m not going to say that bench comparisons are always bad, but I’ve yet to see one which actually makes sense <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="49" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/49" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>I suppose the same argument could be made about comparing systems merely based on their properties/features – a particular feature may sound compelling on paper, but if it can’t be demonstrated to tip the cost-benefit scale in the right direction in practice, it has no real value.</p>
</blockquote>
</aside>
<p>Personally I think these things are hard to properly quantify. However, looking at the properties, you can at least decide which ones do you value. For example, Erlang has excellent support for fault-tolerance, but is unspectacular in CPU processing, and terrible at crunching numbers. Knowing that, I can pick or avoid Erlang, depending on the particular specifics of the problem I’m solving.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="35291" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/66">Post #65</a>
	                </div>
	            </div>
              <div id="likers-container-35291" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="35291"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #65"></div>
  </section>
</div>
    <div class="postbit" id="35342" data-post-id="35342">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="anthonyb" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  anthonyb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>And this is where I think is the core difference between our opinions.</p>
</blockquote>
<p>I don’t think it is so much that we disagree, but that to some degree you have been caricaturizing my arguments and somewhat inconsistent in your own.</p>
<p>Please note, my initial post was in response to the following comment from <em>you</em>:</p>
<blockquote>
<p>If we could have an easy way of installing TE suite locally and running, we could have an automated way of benching our frameworks, finding out possible bottlenecks, and even detecting regression performance. Not sure to what extent can TE code currently be used for that, but I agree that this can be useful.</p>
</blockquote>
<p>So, initially you seemed to acknowledge value in making use of the TE suite for measurements. I was just pointing out that it is indeed fairly easy to get the suite up and running on a local machine with the provided Vagrant setup. You could probably be fully set up and ready to play with the code in about 30 minutes. Furthermore, the endpoints are quite simple, so I would think an experienced and knowledgeable Elixir/Phoenix dev could quickly make improvements if the current code is not as idiomatic or performant as it could be. If nobody cares about what Phoenix looks like in the TE data, that’s fine, but if there’s any interest in making improvements, we’re probably talking about a time investment of a few hours at most.</p>
<blockquote>
<p>You seem to think that you can somehow assign a number to <code>foo</code> and <code>bar</code>, and then pick one based on that number,</p>
</blockquote>
<p>I don’t think I have said anything like that. When choosing a technology, many attributes may be relevant to the decision. Performance (speed) may be <em>one</em> of those attributes. Reliability may be another attribute. Both of those things (among many others) can be quantified in various ways, and our decisions should be better to the extent that we have high quality measures of attributes that matter.</p>
<blockquote>
<p>The question is however, how much a particular tech helps you with that. My experience is that Erlang helps a lot, thus making that difficult job easier. However, I cannot quantify that into a number.</p>
</blockquote>
<p>But you can quantify that into a number, and implicitly, you have. When you say “Erlang helps a lot,” there is an implicit comparison there – you are saying it saves you time, effort, headache, etc. <em>compared with</em> other options you have tried or heard about. If it doesn’t really save you time and cost over other options, then why prefer it and recommend it? You may not have precise measurements of the benefits and cost savings, but (a) you at least have a sense that they are non-trivial (i.e., they exceed some threshhold), and (b) they could in principle be measured more precisely, and it would be useful if they were.</p>
<blockquote>
<blockquote>
<blockquote>
<blockquote>
<p>Yes, but how do you know if Elixir exhibits better fault-tolerance, stable latency, and uptime compared with other options?</p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<blockquote>
<blockquote>
<blockquote>
<p>By studying properties of the runtime and the language, and understanding what tools does it give you to help you get those properties.</p>
</blockquote>
</blockquote>
</blockquote>
<blockquote>
<blockquote>
<p>You indicated that in your own initial evaluation of Erlang, you tested it out – you didn’t pick it blindly after merely analyzing its properties.</p>
</blockquote>
</blockquote>
<blockquote>
<p>Precisely, but the point of that test was to verify that Erlang is capable of handling my load. It wasn’t a comparison of Erlang to other stacks, but merely a verification that the stack is capable for what I needed.</p>
</blockquote>
<p>The above exchange is another example where you appear to be disagreeing with me but have in fact simply restated my point. I started by asking how you know Elixir is more reliable, and your initial response was by mere analysis of its properties, independent of its actual real world behavior. I pointed out that you also need to verify any analysis by testing actual behavior, and that you in fact have done so yourself – and now you seem to be agreeing with this point.</p>
<blockquote>
<p>Personally I think these things are hard to properly quantify. However, looking at the properties, you can at least decide which ones do you value. For example, Erlang has excellent support for fault-tolerance, but is unspectacular in CPU processing, and terrible at crunching numbers. Knowing that, I can pick or avoid Erlang, depending on the particular specifics of the problem I’m solving.</p>
</blockquote>
<p>How can you pick without making at least some rough attempt to quantify? Let’s say you need to do a lot of CPU processing? How do you know whether Erlang is or isn’t as fast as any other language you might consider, or whether the differences really matter in terms of cost, etc.? Presumably at some point you are attempting to make some measurements or relying on measurements others have made.</p>
<p>Finally, to be clear, I am not defending the TE benchmarks, and I think you have made many good points about the qualities of Elixir/Erlang and the many factors to consider when evaluating technology solutions. Thank you for sharing your experience and insights.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="35342" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/67">Post #66</a>
	                </div>
	            </div>
              <div id="likers-container-35342" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="35342"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #66"></div>
  </section>
</div>
    <div class="postbit" id="35354" data-post-id="35354">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="58" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/58" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>but that to some degree you have been caricaturizing my arguments</p>
</blockquote>
</aside>
<p>If I did that, it wasn’t intentional, sorry about that.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="58" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/58" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>So, initially you seemed to acknowledge value in making use of the TE suite for measurements.</p>
</blockquote>
</aside>
<p>I did, but only for isolated measurements (i.e. not comparisons). You may also noticed that I said this:</p>
<aside class="quote no-group quote-post-not-found" data-username="sasajuric" data-post="10" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/10" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>It’s worth noting that the goal of optimizing should be to get good and consistent performance numbers (latency and throughput), and not to move the framework up this shallow top list. Because, if the latter is the goal, we might end up doing all sort of trickery just to create the illusion that Phoenix is faster, introducing non-obvious trade-offs which will bite us in more complex real-life scenarios.</p>
</blockquote>
</aside>
<p>So my point was never about improving Phoenix position on the TE list.</p>
<p>Moreover, somewhere during this exchange I took a glance at the Phoenix test code, and then at the requirements for the update task, and that lowered my otherwise low opinion on TE <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> which is possibly the reason for my gradually worse tone about TE.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="58" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/58" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>But you can quantify that into a number, and implicitly, you have. When you say “Erlang helps a lot,” there is an implicit comparison there</p>
</blockquote>
</aside>
<p>Sure, but it’s not an exact number, and it’s a very subjective and vague interpretation, although it’s based on my own experience. I cannot put a number to it, like TE does, and my point is that the TE number is garbage, just like any other number of any other <strong>comparison</strong> bench would be.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="58" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/58" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>You may not have precise measurements of the benefits and cost savings, but (a) you at least have a sense that they are non-trivial (i.e., they exceed some threshhold), and (b) they could in principle be measured more precisely, and it would be useful if they were.</p>
</blockquote>
</aside>
<p>Exactly, it’s a feeling/sense, not a precise number. We might put a number to it in the context of the system. So I could e.g. measure percentage of successful requests, latencies, uptime, etc. But even those numbers wouldn’t be meaningful for comparison between two frameworks. So to restate my point, rather than comparing techs through some number(s), take a look at what they give you, and how you can use their building blocks to make your system.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="58" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/58" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>The above exchange is another example where you appear to be disagreeing with me but have in fact simply restated my point. I started by asking how you know Elixir is more reliable, and your initial response was by mere analysis of its properties, independent of its actual real world behavior. I pointed out that you also need to verify any analysis by testing actual behavior, and that you in fact have done so yourself – and now you seem to be agreeing with this point.</p>
</blockquote>
</aside>
<p>What I tested was not reliability. It was a load test. The reliability I refer to is about fault-tolerance - the ability of the system to mitigate all sorts of outages, keep running with little-to-no downtime, and self-heal to resume the full service. Perhaps I confused you with my terminology there?</p>
<p>I didn’t perform a particular test of fault-tolerance, other than playing with some toy examples as I was learning the language. To be honest, I was pretty clueless for the first year or so, I did many things wrong, and yet the production miraculously survived all sorts of problems. So the production was the proof of fault-tolerance promise, though I did have some idea about those properties, because I actually studied various material about the tech.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="58" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/58" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>How can you pick without making at least some rough attempt to quantify? Let’s say you need to do a lot of CPU processing? How do you know whether Erlang is or isn’t as fast as any other language you might consider, or whether the differences really matter in terms of cost, etc.? Presumably at some point you are attempting to make some measurements or relying on measurements others have made.</p>
</blockquote>
</aside>
<p>It depends. For some things I’ll of course measure, at least to validate that I have reached desired perf. If I’m unsure, I might do a quick experiment. For some other things, I wouldn’t even touch Erlang. If I’m writing a one-off program (as opposed to a continuously running system), then many benefits and trade-offs of Erlang make little-to-no sense, so I’d likely consider something else.</p>
<p>I didn’t say (or at least didn’t try to say) that measurements are bad. I did benches during my talks, I have a blog post about a shallow bench of Phoenix, and I certainly bench during my work. My point was that <strong>comparison</strong> benches such as the TE one are fundamentally flawed, because they indicate that the whole stack should be chosen based on a number. And I think this is very shallow and misleading.</p>
<aside class="quote no-group quote-post-not-found" data-username="anthonyb" data-post="58" data-topic="5036">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/f9ae1b/48.png" class="avatar"><a href="https://forum.elixirforum.com/t/techempower-benchmarks-round-14/5036/58" rel="nofollow">TechEmpower Benchmarks Round 14</a></div>
<blockquote>
<p>Finally, to be clear, I am not defending the TE benchmarks, and I think you have made many good points about the qualities of Elixir/Erlang and the many factors to consider when evaluating technology solutions. Thank you for sharing your experience and insights.</p>
</blockquote>
</aside>
<p>It was a good exchange and I hope I didn’t come off as arguing for the sake of argument, because that wasn’t my intention <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="35354" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/68">Post #67</a>
	                </div>
	            </div>
              <div id="likers-container-35354" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="35354"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #67"></div>
  </section>
</div>
    <div class="postbit" id="35444" data-post-id="35444">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="fishcakez" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/fishcakez/120/12081_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  fishcakez
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Ecto Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I tried to write a quick example using what I naively assume are the faster possible combinations of libs available to Elixir at <a href="https://github.com/fishcakez/FrameworkBenchmarks/commit/4099828651725837bc61946a43fb5afb329ddb0e" class="inline-onebox" rel="noopener nofollow ugc">Add Elli with Elixir/PostgreSQL · fishcakez/FrameworkBenchmarks@4099828 · GitHub</a>. I did not do ANY tuning, except to automatically adjust pool size based on machine size. Hopefully someone can compare it with the existing phoenix implementation and fix things up there. On my machine throughput is higher for all tests, especially multiple queries and updates.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="35444" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/69">Post #68</a>
	                </div>
	            </div>
              <div id="likers-container-35444" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="35444"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #68"></div>
  </section>
</div>
    <div class="postbit" id="65416" data-post-id="65416">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="thousandsofthem" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/thousandsofthem/120/1030_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  thousandsofthem
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="onebox allowlistedgeneric" data-onebox-src="https://groups.google.com/forum/#!topic/framework-benchmarks/nePDNY9jp-4">
  <header class="source">

      <a href="https://groups.google.com/forum/#!topic/framework-benchmarks/nePDNY9jp-4" target="_blank" rel="noopener nofollow ugc">groups.google.com</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://groups.google.com/forum/#!topic/framework-benchmarks/nePDNY9jp-4" target="_blank" rel="noopener nofollow ugc">Redirecting to Google Groups</a></h3>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>Phoenix is missing, again. <img src="https://forum.elixirforum.com/images/emoji/apple/frowning.png?v=15" title=":frowning:" class="emoji" alt=":frowning:" loading="lazy" width="20" height="20"><br>
logs: <a href="http://tfb-logs.techempower.com/round-13/preview-2/logs-20161031-1/phoenix/" rel="noopener nofollow ugc">http://tfb-logs.techempower.com/round-13/preview-2/logs-20161031-1/phoenix/</a><br>
exact line:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Setup phoenix: dpkg-deb: error: `elixir_1.3.2-1~ubuntu~trusty_amd64.deb' is not a debian format archive
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="65416" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/70">Post #69</a>
	                </div>
	            </div>
              <div id="likers-container-65416" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="65416"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #69"></div>
  </section>
</div>
    <div class="postbit" id="14154" data-post-id="14154">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dsissitka" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dsissitka
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I see the issue:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">$ grep -R elixir .
...
./toolset/setup/linux/languages/elixir.sh:fw_get -O http://packages.erlang-solutions.com/debian/pool/elixir_${VERSION}~ubuntu~${RELEASE}_${ARCH}.deb
...
$
</code></pre>
<p>That evaluates to <a href="http://packages.erlang-solutions.com/debian/pool/elixir_1.3.2-1~ubuntu~trusty_amd64.deb" rel="noopener nofollow ugc">http://packages.erlang-solutions.com/debian/pool/elixir_1.3.2-1~ubuntu~trusty_amd64.deb</a>, which doesn’t exist. Their version and arch are out of date.</p>
<p>I’ll submit a pull request.</p>
<p>Edit: Done.</p>
<p><a href="https://github.com/TechEmpower/FrameworkBenchmarks/pull/2333" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/TechEmpower/FrameworkBenchmarks/pull/2333</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="14154" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/71">Post #70</a>
	                </div>
	            </div>
              <div id="likers-container-14154" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="14154"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #70"></div>
  </section>
</div>
    <div class="postbit" id="14755" data-post-id="14755">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="thousandsofthem" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/thousandsofthem/120/1030_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  thousandsofthem
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>New preview. <a href="https://www.techempower.com/benchmarks/previews/round13/azure.html" rel="noopener nofollow ugc">https://www.techempower.com/benchmarks/previews/round13/azure.html</a><br>
So far so good. Thanks again for the patch</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="14755" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/techempower-benchmarks/171/72">Post #71</a>
	                </div>
	            </div>
              <div id="likers-container-14755" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="14755"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #71"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/171/load_more?page=8">Load more posts (59 remaining)</a>
</div></template></turbo-stream>