ChanServ changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.23.1 | Fund Crystal's development: http://is.gd/X7PRtI | GH: https://github.com/crystal-lang/crystal | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/ | Gitter: https://gitter.im/crystal-lang/crystal
snsei has joined #crystal-lang
snsei has quit [Remote host closed the connection]
<FromGitter> <g33kidd> Has anybody built an RTMP library in Crystal yet?
snsei has joined #crystal-lang
snsei has quit [Remote host closed the connection]
rohitpaulk has joined #crystal-lang
maxpert has joined #crystal-lang
maxpert has quit [Remote host closed the connection]
rohitpaulk has quit [Ping timeout: 248 seconds]
snsei has joined #crystal-lang
_4d47 has quit [Quit: Connection closed for inactivity]
<FromGitter> <bararchy> I didn't hear that one was made , but you should check the shards site
<FromGitter> <bararchy> https://crystalshards.xyz/
ShalokShalom has joined #crystal-lang
maxpert has joined #crystal-lang
snsei has quit [Remote host closed the connection]
snsei has joined #crystal-lang
rohitpaulk has joined #crystal-lang
snsei has quit [Remote host closed the connection]
snsei has joined #crystal-lang
<FromGitter> <crisward> https://brew.sh/analytics/install-on-request/ Position 417 for crystal, not sure if that's good or not.
snsei has quit [Remote host closed the connection]
<FromGitter> <codenoid> just 5k ?, hmm :/
maxpert has quit [Remote host closed the connection]
maxpert has joined #crystal-lang
maxpert has quit [Remote host closed the connection]
<vegai> well
<vegai> minimal-racket @ 1607
<vegai> nim isn't even on the list
<vegai> rust @ 19,028 though
<vegai> there are the languages I care about these days :P
<vegai> Node having 700k is a bit distressing, I guess
<vegai> but so it goes
alex`` has joined #crystal-lang
<FromGitter> <Fanna1119> ```"x".equal?"x"``` ⏎ ⏎ how would i perform this in crystal haha [https://gitter.im/crystal-lang/crystal?at=59acf02e614889d475ba8210]
<vegai> "x" == "x" ?
DTZUZO has quit [Ping timeout: 240 seconds]
<FromGitter> <bararchy> XD
<FromGitter> <bararchy> ```"x" == "x"```
<FromGitter> <GetRektByMe> Um
<FromGitter> <GetRektByMe> I feel like "x" == "x" is standard in most languages
<livcd> but node
<livcd> even my grandmother has a dependency on node
<livcd> ruby is also low since i guess people use rvm
<FromGitter> <bararchy> Grandmothers are known to have lots of dependncies
alex``` has joined #crystal-lang
alex``` is now known as alexherbo2
alexherbo2 is now known as alex```
claudiuinberlin has joined #crystal-lang
codenoid has joined #crystal-lang
claudiuinberlin has quit [Client Quit]
Groogy has quit [Disconnected by services]
Groogy_ is now known as Groogy
Groogy2 has joined #crystal-lang
<Groogy> Morning!
codenoid has quit [Ping timeout: 260 seconds]
mark_66 has joined #crystal-lang
<FromGitter> <crisward> I imagine many Mac Users install node via the website though.
<FromGitter> <sdogruyol> Morning
claudiuinberlin has joined #crystal-lang
<FromGitter> <bararchy> Morning @sdogruyol Groogy :)
rohitpaulk has quit [Ping timeout: 240 seconds]
<FromGitter> <sdogruyol> sup @bararchy
claudiuinberlin has quit [Ping timeout: 240 seconds]
rohitpaulk has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 240 seconds]
<FromGitter> <krypton97> morning all
rohitpaulk has joined #crystal-lang
<FromGitter> <sdogruyol> Morning @krypton97
<FromGitter> <krypton97> seems that fasthttp was defeated https://github.com/tbrand/which_is_the_fastest
<FromGitter> <krypton97> 👍
<FromGitter> <sdogruyol> hehe
rohitpaulk has quit [Ping timeout: 252 seconds]
<FromGitter> <bararchy> Nice
<FromGitter> <bararchy> "but it's too fat for some purpose" XD
<FromGitter> <bararchy> lol @sdogruyol you'r Kemal is so fat it needs 0.01 sec to boot !
<FromGitter> <bararchy> btw, how comes there is such a different between Kemal and router_cr ?
<FromGitter> <sdogruyol> lol
<FromGitter> <sdogruyol> it's not doing the same thing as Kemal
<FromGitter> <sdogruyol> less features :P
<FromGitter> <sdogruyol> it also uses radix though
<FromGitter> <bararchy> Also, what exactly are the things getting tested here ? ⏎ "Measuring response times for each framework" , response time for what ? a single request ? a max out of 10k concurrent connections ?
<FromGitter> <sdogruyol> not sure about that
rumenzu has joined #crystal-lang
rohitpaulk has joined #crystal-lang
<FromGitter> <codenoid> btw my routercr sometime is broke, not like my kemal
rohitpaulk has quit [Ping timeout: 246 seconds]
Qchmqs__ has joined #crystal-lang
Qchmqs__ is now known as Qchmqs
<FromGitter> <krypton97> @sdogruyol in the kemal source code, the static handler is not disabled
<FromGitter> <krypton97> for that benchmark
<FromGitter> <krypton97> In case it would affect
rohitpaulk has joined #crystal-lang
<Groogy> hmm do anyone have some benchmarks they trust on Lua performance compared to like C++ and Crystal?
bmcginty has quit [Ping timeout: 252 seconds]
bmcginty has joined #crystal-lang
<FromGitter> <Fanna1119> @GetRektByMe never mind missed something out of my question :D
<FromGitter> <krypton97> Groovy, what's so special about LUA:)? I know they use it in AAA industry if I'm not wrong
<FromGitter> <jose-rodrigues> @krypton97 it's supposed to bes the fastest script language
<FromGitter> <jose-rodrigues> And it works great with c++
<FromGitter> <jose-rodrigues> besides that I don't see why it's special
<Groogy> Lua*, it's a name
<Groogy> it's used in a game I'm gonna be alpha tester for
<Groogy> so you can code stuff in the game
<Groogy> so just want to know how limiting the performance is
ShalokShalom_ has joined #crystal-lang
ShalokShalom has quit [Ping timeout: 252 seconds]
maxpert has joined #crystal-lang
maxpert has quit [Ping timeout: 248 seconds]
_4d47 has joined #crystal-lang
<FromGitter> <jose-rodrigues> @Groovy From all the benchmarks I've seen it's similar to JS. (I can't affirm they are legit)
<FromGitter> <krypton97> I've always thought that JS is the fastest scripted language lol
<FromGitter> <krypton97> BTW, is here someone working with bitcoins? I've got some and I dont know if I should stack them or covert them
<FromGitter> <krypton97> From what I've read it'll keep growing but that's speculations ofc
<FromGitter> <sdogruyol> @krypton97 it affects
<FromGitter> <sdogruyol> Disabling static file improves kemal performance
<livcd> krypton97: well those $$$ invested in Chrome and v8 have to show somewhere no?
<livcd> krypton97: btcs. It depends. Do you need $ right now ? My friend had 50btcs. Sold 30 when it was 400 and paid for his car. Saved 20 to this day.
<FromGitter> <krypton97> I'll submit a pool reqiest disabling the static handler
<FromGitter> <krypton97> @livcd I'ma stack them for now. I remember I read that js was written in just 10 days lol
<FromGitter> <krypton97> Es6 makes it much better though
rohitpaulk has quit [Ping timeout: 252 seconds]
<livcd> krypton97: JS feels very weird to me I can't get used to it even with the syntactic sugare with ES6. prototypes and inheritance and the rest remains
rohitpaulk has joined #crystal-lang
<FromGitter> <krypton97> es6 makes it even weird with templatates strings, proxies and so on :)
<livcd> it's sad to see js to be that popular
<FromGitter> <krypton97> wait no no no,
<FromGitter> <krypton97> U can code on desktop, mobile and browser with js
<FromGitter> <krypton97> Things like react-native makes it more and more cool
<FromGitter> <krypton97> and despite that, there's a lot of well paid node.js/frontend jobs
<livcd> I get it I just do not enjoy JS and it's sad to see it used for everything everywhere
rohitpaulk has quit [Ping timeout: 248 seconds]
flaviodesousa has joined #crystal-lang
rohitpaulk has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 240 seconds]
<FromGitter> <crisward> Recent inteview with Ryan Dahl, creater of node, where he basically says Go-lang got non-blocking io right, vs nodes callbacks. Interesting read. https://www.mappingthejourney.com/single-post/2017/08/31/Episode-8-Interview-with-Ryan-Dahl-Creator-of-Nodejs
<crystal-gh> [crystal] ZeWebDev opened pull request #4925: Process markdown in block quotes (master...master) https://git.io/v5uU3
<livcd> it is really admirable for him to say something like that
maxpert has joined #crystal-lang
alex``` has quit [Quit: WeeChat 1.9]
alex`` has quit [Quit: WeeChat 1.9]
maxpert has quit [Ping timeout: 240 seconds]
alex`` has joined #crystal-lang
Philpax__ has joined #crystal-lang
DTZUZO has joined #crystal-lang
sz0 has joined #crystal-lang
<FromGitter> <codenoid> I do not know, if not yet understand the problem (like his), or how, obviously I have edited this file several times https://goo.gl/rPd7Yc :/
rohitpaulk has joined #crystal-lang
<FromGitter> <krypton97> what's the equivalent of js `slice(begin, end)` method in crystal
<FromGitter> <krypton97> ?
<FromGitter> <krypton97> nvm
<FromGitter> <krypton97> string[start..end-1] works like a charm
<txdv> its like ruby
<FromGitter> <krypton97> well thanks, but no ruby background
<FromGitter> <krypton97> not even python :P
<txdv> what is your background?
<txdv> mine is dark and very abstract
<Groogy> my background is a picasso painting
<FromGitter> <krypton97> ctx.Background()
<FromGitter> <krypton97> if you're familiar with go
<FromGitter> <krypton97> jokes aside, I've started with c++ and got into node.js, go and crystal now
<FromGitter> <sdogruyol> Interesting
rohitpaulk has quit [Ping timeout: 246 seconds]
<FromGitter> <krypton97> still using node on frontend
<FromGitter> <krypton97> npm is great
Philpax__ has quit [Ping timeout: 260 seconds]
<txdv> isn't bower like the npm for frontend stuff
<FromGitter> <crisward> bower was so 2014. Actually that's js all over.
<FromGitter> <crisward> Also JS->crystal on back end
<FromGitter> <crisward> Actually I've gone js->coffee->crystal on backend and js->coffee->ts on front end
Gasher has joined #crystal-lang
<Gasher> hello, how to check if a function is defined?
<FromGitter> <crisward> I'm guessing it won't compile if it doesn't exist. Do you mean a method on a object?
<FromGitter> <krypton97> try catch block with ensure rescu
<FromGitter> <krypton97> e
<FromGitter> <gabrielrios> object.responds_to?(:method_name)
ShalokShalom_ is now known as ShalokShalom
<FromGitter> <drujensen> @krypton97 once he fixes Kemal it should be up their as well
<FromGitter> <krypton97> wow
<FromGitter> <krypton97> @drujensen
<FromGitter> <krypton97> Kemal.config do |cfg| ⏎ cfg.serve_static = false ⏎ cfg.logging = false ⏎ end [https://gitter.im/crystal-lang/crystal?at=59ad5b3666c1c7c477138ede]
<FromGitter> <drujensen> if we don’t have the top 4 finishes, there is probably something wrong with the benchmark
<FromGitter> <drujensen> yeah, I think that is what is slowing Kemal down
<FromGitter> <krypton97> I'll refork it
<FromGitter> <drujensen> Kemal does the same thing as Raze
<FromGitter> <krypton97> I've tried running the benchmarks on my devices, but no jvm, .net and so on..
<FromGitter> <drujensen> Raze is doing exactly what I did with Kemalyst
<FromGitter> <drujensen> they all are using the same handlers that is built into the crystal api
<FromGitter> <krypton97> kemal still beat iris in that benchmakr
<FromGitter> <krypton97> I'll refork it now
<FromGitter> <krypton97> I'll make the amber setup righ now, but in like 15 mins I have to go the barbe
<FromGitter> <krypton97> r
chamar has joined #crystal-lang
<FromGitter> <drujensen> @krypton97 my guess is they are not using reuse port either
<FromGitter> <krypton97> They don't
<FromGitter> <krypton97> The static handler push request just got accepted
<FromGitter> <drujensen> 👍
<FromGitter> <krypton97> What is reuse port doing?
<FromGitter> <drujensen> so crystal currently doesn’t support parallelism
<FromGitter> <drujensen> if you have a system with 4 cores
<FromGitter> <drujensen> crystal is only going to run on one of them
<FromGitter> <drujensen> to take advantage of the other 3
<FromGitter> <drujensen> you need to run multiple processes. One per each
<FromGitter> <drujensen> but then you have an issue with the 4 servers all trying to use the same port
<FromGitter> <drujensen> if you enable reuse port, the processes will automatically be round robined
<FromGitter> <drujensen> so you can take advantage of all 4 cores
<FromGitter> <krypton97> Oo, now I got it. Shoudn't kemal/raze have this by default since it's better..
<FromGitter> <drujensen> yes, you can enable reuse port in kemal. its another configuration setting
<FromGitter> <drujensen> then you need to run the correct number of processes to match the cores on the system
<FromGitter> <bararchy> @drujensen On Linux it's not round robin, it's a very cool process of Load balancing :) On MacOS and Windows it's round robin
<FromGitter> <drujensen> @bararchy really?
<FromGitter> <krypton97> I've checked raze and doesn't seem to have port reuse by default and got ranked #2
<FromGitter> <drujensen> he is not providing specs for his benchmark
<FromGitter> <drujensen> so its hard to say if it will affect them
<FromGitter> <bararchy> ```code paste, see link```
<FromGitter> <bararchy> Oh ...
<FromGitter> <bararchy> the kernel performs some "special magic" for SO_REUSEPORT sockets that isn't found in other operating systems: For UDP sockets, it tries to distribute datagrams evenly, for TCP listening sockets, it tries to distribute incoming connect requests (those accepted by calling accept()) evenly across all the sockets that share the same address and port combination. Thus an application can easily open the same port
<FromGitter> ... in multiple child processes and then use SO_REUSEPORT to get a very inexpensive load balancing.
<FromGitter> <faustinoaq> Preview 2 Round 15 of Techempower Benchmarks is available ⏎ ⏎ https://www.techempower.com/benchmarks/previews/round15/r15p1-vs-r15p2.html
<FromGitter> <sdogruyol> btw
<FromGitter> <sdogruyol> I've just found a big performance bottleneck in Kemal
<FromGitter> <sdogruyol> Fixing that gives %10 - 15 boost
<FromGitter> <faustinoaq> @sdogruyol seems that static_server is still enabled
<FromGitter> <bararchy> @sdogruyol Nice !
<FromGitter> <sdogruyol> This is unrelated to static server
<FromGitter> <sdogruyol> Not good
<FromGitter> <faustinoaq> Oh, I see
<FromGitter> <sdogruyol> this shouldnt work for non multipart form requests
<FromGitter> <sdogruyol> get e.g
<FromGitter> <sdogruyol> so calling remove_tmpfile on each request is just redundant
<FromGitter> <faustinoaq> The same happen with Kemalyst/Amber?
<FromGitter> <drujensen> no, we don’t have that in our multipart form handler
snsei has joined #crystal-lang
<FromGitter> <sdogruyol> @drujensen don't you create a temp file for uploads?
<FromGitter> <drujensen> yeah, but we dont try to remove them
<FromGitter> <drujensen> they are temp and the os takes care of it
<FromGitter> <drujensen> disappointed in the benchmark results
<FromGitter> <sdogruyol> which one?
<FromGitter> <drujensen> Techempower
<FromGitter> <sdogruyol> for?
<FromGitter> <drujensen> Locally, I was seeing different numbers for crystal
<FromGitter> <drujensen> we were way higher on my local run
<FromGitter> <drujensen> not sure why there is a difference
<FromGitter> <sdogruyol> round 15 published yet?
<FromGitter> <sdogruyol> Havent seen it
<FromGitter> <sdogruyol> ain't it preview
<FromGitter> <drujensen> ???
<FromGitter> <sdogruyol> i mean this is not final
<FromGitter> <drujensen> yeah, second preview
<FromGitter> <drujensen> right
<FromGitter> <sdogruyol> yes
<FromGitter> <drujensen> but its at all what i was expecting. :-(
<FromGitter> <sdogruyol> it's interesting to see Kemal slow on json
<FromGitter> <sdogruyol> also in plaintext
<FromGitter> <sdogruyol> weird
<FromGitter> <drujensen> right, we are doing the same thing as crystal
<FromGitter> <drujensen> why are they so low?
<FromGitter> <sdogruyol> not sure
<FromGitter> <drujensen> on my local runs, we were doing about the same as revenj.jvm
<FromGitter> <drujensen> but I wasn’t doing 3 servers, etc
Qchmqs has quit [Remote host closed the connection]
<FromGitter> <drujensen> 👍
mark_66 has quit [Remote host closed the connection]
<FromGitter> <krypton97> Looks like node js does better loool
<FromGitter> <sdogruyol> this hardware maybe a vps or ec2 instance
<FromGitter> <sdogruyol> totally weird
<FromGitter> <krypton97> inside job
<FromGitter> <sdogruyol> what?
<FromGitter> <krypton97> Well, they only want java, c++ on top
<FromGitter> <krypton97> and a bit of go
<FromGitter> <sdogruyol> We won't let them :D
<FromGitter> <drujensen> I wish I had more insight into the results
<FromGitter> <drujensen> like, did the correct number of processes get launched?
<FromGitter> <drujensen> ```for i in $(seq 1 $(nproc --all)); do ⏎ ./amber & ⏎ done``` [https://gitter.im/crystal-lang/crystal?at=59ad6d7ebac826f0547bfa12]
<FromGitter> <drujensen> does `nproc` correctly return the number of cores?
<FromGitter> <faustinoaq> @drujensen I think so
<FromGitter> <drujensen> yeah, i know it should. just wondering what the heck went wrong
rohitpaulk has joined #crystal-lang
Gasher has quit [Ping timeout: 252 seconds]
<FromGitter> <drujensen> ok, question @bararchy @rx14, i’m not a low level guy so kinda out of my league here. I saw this post on determining the number of cores available. https://unix.stackexchange.com/questions/218074/how-to-know-number-of-cores-of-a-system-in-linux
<FromGitter> <drujensen> the answer says we should be doing this calculation: "CPUs = Threads per core X cores per socket X sockets"
<FromGitter> <drujensen> should we do this instead? ⏎ ⏎ `````` [https://gitter.im/crystal-lang/crystal?at=59ad70a98f4427b462cfb016]
<FromGitter> <drujensen> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=59ad70b2210ac26920f3c0b6]
<FromGitter> <sdogruyol> hey @Papierkorb this might interest you https://www.vandenoever.info/blog/2017/09/04/rust_qt_binding_generator.html
<FromGitter> <krypton97> I worry more about the haircut I got than those benchmakrs :). Just forget about that techempower crap, seeing node.js being better than a compiled language tells me all I need bout that site
<FromGitter> <bararchy> @drujensen https://github.com/crystal-lang/crystal/issues/4226
<FromGitter> <drujensen> lol
<FromGitter> <bararchy> So , are you asking how to get core number , or , what is the optimal number of processes to exec ?
<FromGitter> <drujensen> retorical question? trying to fix the Techempower benchmarks. the second.
<FromGitter> <drujensen> probably a bad assumption, but don’t we want a process per core?
<FromGitter> <sdogruyol> yes
<FromGitter> <bararchy> Yes we do
<FromGitter> <bararchy> That's optimal , more then that will not produce better results
<FromGitter> <bararchy> Also , those are not threads , but full blown processes , so the regular equations do not hold
<FromGitter> <sdogruyol> yeah
<FromGitter> <drujensen> ok, so what we are doing `nproc all` doesn’t seem correct
<FromGitter> <faustinoaq> I think parallelism in crystal will solve these issues.
<FromGitter> <faustinoaq> We will need to run just one process
Gasher has joined #crystal-lang
<FromGitter> <drujensen> @faustinoaq I agree, but in the mean time, I would like to find out why the benchmarks sucked so bad. :-)
Gasher is now known as Guest36039
<FromGitter> <faustinoaq> @drujensen Perhaps, is just that crystal http library isn't too optimized as Java and other yet.
<FromGitter> <drujensen> possibly, but other benchmarks i’ve performed show a different story
maxpert has joined #crystal-lang
<FromGitter> <drujensen> and the preview 2 results are not inline with them so that is why I think there is something wrong.
Guest36039 has quit [Quit: Leaving]
maxpert has quit [Ping timeout: 240 seconds]
<FromGitter> <sdogruyol> that's also another issue
<RX14> why is nproc --all not correct?
<RX14> if your ead the man page it returns the number of processors
<RX14> processors being what you'd call a CPU core
<FromGitter> <sdogruyol> how about hyperthreading cpus?
<RX14> because back when that command was invented all we had was processors and sockets
<RX14> cores
<RX14> SMT
<RX14> all were not invented
<RX14> nproc --all returns the number of logical processors
<RX14> not the number of sockets or physical cores
<FromGitter> <luislavena> @RX14, @sdogruyol on my i7, `nproc --all` reports 8, but real cores are 4
<RX14> exactly
<RX14> number of logical processors
sz0 has quit [Quit: Connection closed for inactivity]
<FromGitter> <luislavena> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=59ad77e6bac826f0547c2b4f]
<FromGitter> <drujensen> is it possilbe they have limits restricting the number of processors?
<RX14> do you have any evidence that we're not using all available CPU power?
<FromGitter> <drujensen> no
<FromGitter> <drujensen> we have evidence that the benchmarks sucked
<RX14> it's unlikely we are
<RX14> our benchmarkr esults are about where i'd expect
<RX14> the benchmarks don't suck lol
<FromGitter> <drujensen> really?
<RX14> we're 15th place
<FromGitter> <drujensen> sad. :-(
<RX14> crystal-raw plaintext is 2.5 million requests per second
<RX14> how is that in any way sad
<RX14> 15th place behind a bunch of highly optimised C and java code
<RX14> and we're above almost all popular frameworks
<FromGitter> <drujensen> https://www.techempower.com/benchmarks/previews/round15/#section=data-r15&hw=ph&test=plaintext
<FromGitter> <luislavena> Crystal (raw), plaintext and json shows huge performance improvement.
<RX14> yeah
<RX14> this is better
<RX14> shows comparisons
<RX14> between preview 1 and 2
<RX14> and we didn't change anything
<RX14> which is interesting
<FromGitter> <luislavena> perhaps the bottleneck is the DB driver itself
<FromGitter> <drujensen> ok, I will look at Amber and Kemal to see what happened with them. we must be doing something wrong
<RX14> yeah
<RX14> the DB driver needs optimisation
<RX14> @drujensen yeah making a framework ;)
<RX14> you can't have your cake and eat it
<FromGitter> <luislavena> Perhaps the issue is the connection pool, I remember having some minor details with that when doing some testing last year (getting older)
<RX14> once you start piling a framework on you're nturally going to have bad performance
<FromGitter> <sdogruyol> the cake is a lie
<FromGitter> <sdogruyol> @RX14
<RX14> well worse performance
<RX14> kemal and amber can do a *lot* better
<FromGitter> <drujensen> yes they can
<FromGitter> <drujensen> any help is appreciated. We should be close to crystal speed
<FromGitter> <sdogruyol> I'm curious to see when native parallelism lands in Crystal
<FromGitter> <sdogruyol> hope we don't go way down in these benchmarks
<RX14> well
<RX14> go-prefork is the only go higher than us in the tests
<FromGitter> <luislavena> @sdogruyol native parallelism might introduce %age of slowdown
<RX14> and it does that by doing what we do
<RX14> preforking and using the same socket
<RX14> instead of their native goroutines
<FromGitter> <sdogruyol> yeah
<FromGitter> <luislavena> Question, are the tests using `nproc --all` as total number? or doing N-1?
<RX14> it launches nproc --all crystal processes
<RX14> which actually I think is too many
ShalokShalom has quit [Ping timeout: 248 seconds]
<RX14> since the GC is multithreaded there will be a lot of context switching from that
<RX14> maybe i should experiment with GC_NPROCS
<FromGitter> <drujensen> it launches one extra thread for GC, correct?
<RX14> many
<RX14> and with 64 processes and 64 cores
<FromGitter> <drujensen> ah, didn’t know that
<RX14> it probably isn;t pretty
rumenzu has quit []
<FromGitter> <drujensen> at crystal code camp they made it sound like it was one
<FromGitter> <drujensen> which wouldn’t tax context switching at all
<FromGitter> <drujensen> how many threads are launched by GC?
<FromGitter> <sdogruyol> nope GC is multithreaded @drujensen
<FromGitter> <drujensen> that makes a huge difference
<FromGitter> <drujensen> I didn’t realize that
<RX14> actually
<FromGitter> <drujensen> is it unmanaged threads?
<RX14> it's limited to 16 threads
<FromGitter> <drujensen> or a pool
<FromGitter> <drujensen> 👍
<RX14> well it's a pool of 16 thread for the GC per process
<RX14> and we have 64 processes
<FromGitter> <drujensen> ouch
<FromGitter> <drujensen> ok, I see your concern with context switching now
<FromGitter> <drujensen> that starts to add up
<FromGitter> <drujensen> is it configurable?
<RX14> yes
<RX14> but kinda hard to test
<RX14> without a crazy machine like theirs
<RX14> with like 64 cores
<FromGitter> <drujensen> right
ShalokShalom has joined #crystal-lang
<FromGitter> <drujensen> is there a reason the GC needs 16 threads? How does it deal with blocking?
<FromGitter> <drujensen> nvm, I guess its time to look at source code
rohitpaulk has quit [Ping timeout: 264 seconds]
<Yxhuvud> I don't know if the gc needs all threads, but it probably blocks all execution on all threads.
<Yxhuvud> ie stop the world. ok if you only care about throughput, but crappy for latency dependent tasks.
<FromGitter> <drujensen> right, it seems like it would be a global block so not sure what the 16 threads would be doing.
chamar has quit [Read error: Connection reset by peer]
franzejr has joined #crystal-lang
franzejr has quit [Client Quit]
rohitpaulk has joined #crystal-lang
<FromGitter> <drujensen> there is no reason for kemal to be this different than crystal. I would love to find out why.
flaviodesousa has quit [Remote host closed the connection]
rohitpaulk has quit [Ping timeout: 240 seconds]
<FromGitter> <drujensen> when we ran amber on a 32 core system, we were getting almost a million requests per second
<FromGitter> <drujensen> this is showing ~100K per second on a 64 core system
<FromGitter> <drujensen> I was expecting close to 2 million per second
maxpert has joined #crystal-lang
sifi has quit [Quit: WeeChat 1.9]
maxpert has quit [Ping timeout: 248 seconds]
<FromGitter> <krypton97> Trashe
<FromGitter> <krypton97> Trashempower*
<FromGitter> <krypton97> I've run a lot of benchmarks, idk where they got those poor results
jplatte has quit [*.net *.split]
byteflame has quit [*.net *.split]
justinmcp has quit [Write error: Broken pipe]
Yxhuvud has quit [Write error: Broken pipe]
Yxhuvud has joined #crystal-lang
justinmcp has joined #crystal-lang
daemonwrangler has quit [Ping timeout: 240 seconds]
claudiuinberlin has joined #crystal-lang
daemonwrangler has joined #crystal-lang
byteflame has joined #crystal-lang
jplatte has joined #crystal-lang
<crystal-gh> [crystal] asterite opened pull request #4927: Macros: try call for unknown var (master...feature/macro-call-no-parentheses) https://git.io/v5uSe
claudiuinberlin has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
maxpert has joined #crystal-lang
claudiuinberlin has joined #crystal-lang
maxpert has quit [Ping timeout: 240 seconds]
snsei has quit [Remote host closed the connection]
claudiuinberlin has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
claudiuinberlin has joined #crystal-lang
balduin has joined #crystal-lang
snsei has joined #crystal-lang
claudiuinberlin has quit [Quit: Textual IRC Client: www.textualapp.com]
balduin has quit [Remote host closed the connection]
balduin has joined #crystal-lang
alex`` has quit [Quit: WeeChat 1.9]
sp4rrow has joined #crystal-lang
sp4rrow has quit [Quit: The Internet needs a break and I need a cookie]
DTZUZU has quit [Quit: WeeChat 1.9]
DTZUZU has joined #crystal-lang
Ven has joined #crystal-lang
Ven is now known as Guest88896
maxpert has joined #crystal-lang
maxpert has quit [Remote host closed the connection]
maxpert has joined #crystal-lang
Guest88896 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<FromGitter> <elorest> I'm pretty confused but those benchmarks. I can get those numbers on my imac.
<FromGitter> <elorest> Something must not be configured right with the settup or something.
<RX14> so it looks almost suspiciously like it's running on 1 core
_4d47 has quit [Quit: Connection closed for inactivity]
<FromGitter> <drujensen> Right. Only Crystal raw seems to be using all cores
<FromGitter> <drujensen> all three other frameworks have blocking?
<FromGitter> <bigDaddyS1oth> Hey peeps, been awhile. How's life?
maxpert has quit [Remote host closed the connection]
maxpert has joined #crystal-lang