IRC logs for #openttd on OFTC at 2024-11-09
โด go to previous day
01:59:04 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
02:27:46 *** Wormnest has joined #openttd
02:36:42 *** ian01223 has quit IRC (Quit: User went offline on Discord a while ago)
03:22:10 *** Wormnest has quit IRC (Quit: Leaving)
03:28:53 *** debdog has quit IRC (Ping timeout: 480 seconds)
03:35:25 *** D-HUND is now known as debdog
04:45:07 <DorpsGek> - Update: Translations from eints (by translators)
07:47:01 <andythenorth> hmm is 24GB RAM enough?
08:04:27 *** HerzogDeXtEr has joined #openttd
08:17:58 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
08:31:17 <andythenorth> but I use Firefox and Chrome, and really they'd like about 48 GB each I think
08:33:32 *** reldred has joined #openttd
08:33:32 <reldred> home desktop and my little gpd winmax2 both have 32gb of ram
08:34:11 <reldred> I still think 8-16gb is sufficient for anything that isn't vidya james or like, high end workflows
08:34:26 <reldred> photography, video, 3d shit, blah blah
08:34:51 <andythenorth> the MBP I want to buy has 24GB
08:34:58 <andythenorth> and the Apple tax on 48GB is high
08:35:22 <andythenorth> I've had 16GB forever, and don't feel the need to flex ๐
08:38:01 <andythenorth> I can usually recover RAM by closing newgrf wiki tabs in chrome
08:38:11 <andythenorth> the wiki eats insane amounts of memory
08:40:06 <andythenorth> 300 MB for a page
08:40:39 <andythenorth> "it's just static text"
08:40:43 <andythenorth> "running banner ads"
08:41:08 <andythenorth> Discord web client is only 450 MB and has a full application running in the DOM and lots of related large images etc
08:43:49 <andythenorth> I've turned this up, maybe it will help ๐
08:49:43 <LordAro> andythenorth: that feels like something is broken somewhere
08:50:50 <andythenorth> I think there's just a 300 MB overhead to a chrome process on macOS
08:51:08 <LordAro> that doesn't change anything :p
08:51:24 <andythenorth> "this is modern browsers"
08:53:22 <reldred> Honestly, as much as it's a meme, I used edge for work shit back when I ran a mac at work. Even with several hundred tabs it kept things very much stable and under control on an old 2016 mbp with 16gb of ram.
08:53:41 <reldred> also helped mentally segment
08:53:47 <reldred> work in edge, play in firefox
08:53:55 <andythenorth> generally I am at peace with Apple price vs. utility. But I'm not paying Tim Apple this much for RAM
08:54:06 <andythenorth> just to have banner ads running for Shein in the wiki
08:54:19 <reldred> consider, ad blockers
08:54:21 <LordAro> reldred: edge > chrome
08:54:40 <reldred> LordAro: but why would i, I agree
08:54:54 <LordAro> reldred: but yeah, i also do the same, except reversed - FF for work stuff, edge for everything else :)
08:55:02 <andythenorth> reldred: yeah I have browser splits
08:55:09 <andythenorth> one for work, one for personal, one for web dev
08:55:15 <reldred> i just find edge tends to behave with m365 better
08:55:53 <reldred> I do the same at home for when I'm wfh, edge just behaves with stupid ass m365 stank ass servicves
08:56:12 <reldred> and all my bookmarks are in firefox so eh I tend to use that for personal
08:56:19 <andythenorth> how much is 24GB of non-soldered RAM? Like ยฃ50 or something?
08:58:02 <andythenorth> hmm not just non-soldered, the problem is that it's integrated with the CPU/GPU
09:04:56 * andythenorth me reading about package-on-package architectures
09:09:48 <andythenorth> "now I feel seen"
09:10:02 <andythenorth> (the last comment)
10:13:33 <merni> Apple users use chrome? ๐
10:28:28 <xarick> if I const variables, will the compiler optimize that for speed or it just doesn't matter
10:35:30 <andythenorth> merni: Most used browser no?
10:37:12 <LordAro> xarick: generally speaking, probably not
10:37:12 <merni> a quick google says safari has about a 9% market share for desktop browsers which instinctually lines up with what I think the market share of macs would be
10:37:29 <LordAro> it matters for function parameters, but the compiler is generally pretty good at knowing whether a variable is const or not
10:43:25 <xarick> `static const std::tuple<const Slope, const int> GetTileSlopeGivenHeight(const int hnorth, const int hwest, const int heast, const int hsouth)`
10:43:25 <xarick> testing dumb stuff like this
10:43:58 <LordAro> it also doesn't normally help with basic integer types
10:44:17 <LordAro> it can be more useful to you as the programmer though
11:02:41 <xarick> i managed quite something
11:02:54 <xarick> but probably not because of consts
11:03:32 <xarick> GetTileZ and GetTileMaxZ really benefit from 3 std::min/max calls instead of one
11:04:39 <xarick> saved 2 seconds on river gen with that
11:10:21 <LordAro> 2 seconds out of how many?
11:10:57 <xarick> it's now 8 on a msvc compiler
11:10:58 <LordAro> well, 20% isn't bad actually
11:12:07 <exceptik> but is it sable? ๐ค
11:13:07 <xarick> gonna test with real master rivers
11:23:58 <xarick> > [2024-11-09 11:18:52] dbg: [misc:0] [CreateRivers] 16071917 us [avg: 16071917.0 us]
11:23:58 <xarick> > [2024-11-09 11:19:22] dbg: [misc:0] [CreateRivers] 15870105 us [avg: 15870105.0 us]
11:23:58 <xarick> > [2024-11-09 11:19:52] dbg: [misc:0] [CreateRivers] 15815144 us [avg: 15815144.0 us]
11:23:58 <xarick> > [2024-11-09 11:20:26] dbg: [misc:0] [CreateRivers] 15755436 us [avg: 15755436.0 us]
11:24:45 <LordAro> i think you can probably guess what i'm going to say
11:24:49 <exceptik> why is your PR touching non-related stuff ๐ค
11:25:58 <LordAro> exceptik: seems pretty well related to me
11:26:36 <LordAro> xarick: any PR claiming to increase performance should contain evidence in the PR
11:27:36 <exceptik> LordAro: im probably looking in the wrong place, it showed other changes like adding preprocessor flags and such ๐ซ
11:27:56 <LordAro> i'm not seeing any of that
11:28:13 <LordAro> there was a force push that did "something" :)
11:28:25 <xarick> > [2024-11-09 11:25:37] dbg: [misc:0] [CreateRivers] 18200296 us [avg: 18200296.0 us]
11:28:25 <xarick> > [2024-11-09 11:26:09] dbg: [misc:0] [CreateRivers] 17681057 us [avg: 17681057.0 us]
11:28:25 <xarick> > [2024-11-09 11:26:40] dbg: [misc:0] [CreateRivers] 17594394 us [avg: 17594394.0 us]
11:28:25 <xarick> > [2024-11-09 11:27:11] dbg: [misc:0] [CreateRivers] 17465302 us [avg: 17465302.0 us]
11:28:33 <exceptik> just the compare burron, don't mind me
11:32:50 <andythenorth> merni: I don't know any mac users who use safari by choice; iOS is different
11:36:06 <LordAro> Given how much those functions are used, I daresay there may be other impacts too
11:37:17 <merni> andythenorth: Wow really
11:37:27 <merni> I don't know more than one or two mac users anyway lol
11:37:36 <merni> Where are those 9% coming from then
11:37:45 <reldred> Yeah same, almost all the customers I have that run macs almost exclusively use Chrome
11:42:35 <andythenorth> pff anyway, I don't need 48GB?
11:58:06 <_jgr_> SamuXarickviaGitHub: To check, you measured this on MSVC, using release builds?
11:59:44 <xarick> "E:\OpenTTD Visual Studio\SamuXarick\OpenTTD\out\install\x64-Release\openttd.exe" -d -g -G 1
12:13:15 <xarick> strange, on linux there's no improvements ๐ฎ
12:16:10 <_jgr_> Doing a release builds with gcc here, your PR makes the function longer and with more branches
12:17:37 <_jgr_> It seems it needs to spill to the stack, and can't just do the obvious code with cmov that in can with the original code
12:18:10 <_jgr_> Not that this makes a huge difference in the big scheme of things
12:18:33 <xarick> there was the original method I didn't test
12:18:56 <xarick> if you check the blame to previously std::
12:19:02 <_jgr_> MIght be worth taking a look at the disassembly to see what MSVC is actually doing
12:21:44 <xarick> gonna try it pre-LordAro
12:33:14 <xarick> > [2024-11-09 12:30:09] dbg: [misc:0] [CreateRivers] 16253842 us [avg: 16253842.0 us]
12:33:14 <xarick> > [2024-11-09 12:30:41] dbg: [misc:0] [CreateRivers] 16205867 us [avg: 16205867.0 us]
12:33:14 <xarick> > [2024-11-09 12:31:09] dbg: [misc:0] [CreateRivers] 15893373 us [avg: 15893373.0 us]
12:33:16 <xarick> > [2024-11-09 12:31:39] dbg: [misc:0] [CreateRivers] 16209667 us [avg: 16209667.0 us]
12:33:55 <xarick> maybe slower, perhaps similar
12:35:37 <exceptik> are you saying that stl variant is slower? than whatever was before?
12:57:42 <kuhnovic> One argument against doing all of this that even though it is slower now, it might get perform better in future versions of MSVC. Compiler development focuses heavily on making anything STL-related highly performant, for the simple reason that it's very likely that the user of that compiler will also be using STL.
13:09:15 <xarick> exceptik: I was comparing to this style of code
13:09:57 <xarick> which is in vein with what it was there before stl variants
13:16:06 <xarick> the function returns the value as int
13:16:11 <xarick> but the heights are uint
13:16:18 <xarick> maybe there's something there
13:16:22 <xarick> converting back and forth
13:16:29 <_glx_> int and uint are not converted
13:19:08 <xarick> Tile::height() is uint8_t, TileHeight(Tile t) returns uint, GetTileZ returns int
13:19:34 <xarick> and std::min previously was casting everything to int
13:19:42 <xarick> or std::max, not sure, one of them
13:20:11 <xarick> there's also TileIndex to Tile
13:34:41 <kuhnovic> How a zero width space ended up in my commit message is beyond me...
13:39:48 <xarick> during world gen, maybe I can use that to test too
13:46:51 <xarick> oh, arctic industries too
13:55:12 <_jgr_> That's doesn't sound very helpful for what is needed here
14:08:22 <_glx_> _EXPORT_STD template <class _Ty, class _Pr>
14:08:22 <_glx_> _NODISCARD constexpr _Ty(min)(initializer_list<_Ty> _Ilist, _Pr _Pred) {
14:08:22 <_glx_> // return leftmost/smallest
14:08:22 <_glx_> _Ilist.size() != 0, "An initializer_list passed to std::min must not be empty. (N4971 [alg.min.max]/5)");
14:08:23 <_glx_> #if _USE_STD_VECTOR_ALGORITHMS
14:08:23 <_glx_> if constexpr (_Is_min_max_optimization_safe<const _Ty*, _Pr>) {
14:08:25 <_glx_> if (!_Is_constant_evaluated()) {
14:08:25 <_glx_> return static_cast<_Ty>(_STD _Min_vectorized(_Ilist.begin(), _Ilist.end()));
14:08:29 <_glx_> #endif // _USE_STD_VECTOR_ALGORITHMS
14:08:29 <_glx_> const _Ty* _Res = _STD _Min_element_unchecked(_Ilist.begin(), _Ilist.end(), _STD _Pass_fn(_Pred));
14:09:47 <xarick> i can't read this kind of code ๐ฎ
14:10:00 <_jgr_> Looks like it writes the 4 values to a stack array and presumably eventually ends up loading then into an xmm register
14:13:35 <exceptik> what is `_Min_vectorized` doing underneath?
14:14:03 <_glx_> auto _Min_vectorized(_Ty* const _First, _Ty* const _Last) noexcept {
14:14:03 <_glx_> constexpr bool _Signed = is_signed_v<_Ty>;
14:14:03 <_glx_> if constexpr (is_pointer_v<_Ty>) {
14:14:05 <_glx_> return reinterpret_cast<void*>(::__std_min_8u(_First, _Last));
14:14:07 <_glx_> return reinterpret_cast<void*>(::__std_min_4u(_First, _Last));
14:14:09 <_glx_> } else if constexpr (is_same_v<remove_const_t<_Ty>, float>) {
14:14:09 <_glx_> return ::__std_min_f(_First, _Last);
14:14:11 <_glx_> } else if constexpr (_Is_any_of_v<remove_const_t<_Ty>, double, long double>) {
14:14:11 <_glx_> return ::__std_min_d(_First, _Last);
14:14:13 <_glx_> } else if constexpr (sizeof(_Ty) == 1) {
14:14:13 <_glx_> if constexpr (_Signed) {
14:14:15 <_glx_> return ::__std_min_1i(_First, _Last);
14:14:17 <_glx_> return ::__std_min_1u(_First, _Last);
14:14:19 <_glx_> } else if constexpr (sizeof(_Ty) == 2) {
14:14:19 <_glx_> if constexpr (_Signed) {
14:14:21 <_glx_> return ::__std_min_2i(_First, _Last);
14:14:23 <_glx_> return ::__std_min_2u(_First, _Last);
14:14:25 <_glx_> } else if constexpr (sizeof(_Ty) == 4) {
14:14:25 <_glx_> if constexpr (_Signed) {
14:14:27 <_glx_> return ::__std_min_4i(_First, _Last);
14:14:29 <_glx_> return ::__std_min_4u(_First, _Last);
14:14:31 <_glx_> } else if constexpr (sizeof(_Ty) == 8) {
14:14:31 <_glx_> if constexpr (_Signed) {
14:14:33 <_glx_> return ::__std_min_8i(_First, _Last);
14:14:35 <_glx_> return ::__std_min_8u(_First, _Last);
14:14:37 <_glx_> _STL_INTERNAL_STATIC_ASSERT(false); // unexpected size
14:14:41 <_glx_> vs ```template <class _FwdIt, class _Pr>
14:14:41 <_glx_> constexpr _FwdIt _Min_element_unchecked(_FwdIt _First, _FwdIt _Last, _Pr _Pred) { // find smallest element
14:14:43 <_glx_> #if _USE_STD_VECTOR_ALGORITHMS
14:14:43 <_glx_> if constexpr (_Is_min_max_optimization_safe<_FwdIt, _Pr>) {
14:14:45 <_glx_> if (!_Is_constant_evaluated()) {
14:14:45 <_glx_> const auto _First_ptr = _STD _To_address(_First);
14:14:47 <_glx_> const auto _Result = _STD _Min_element_vectorized(_First_ptr, _STD _To_address(_Last));
14:14:47 <_glx_> if constexpr (is_pointer_v<_FwdIt>) {
14:14:51 <_glx_> return _First + (_Result - _First_ptr);
14:14:55 <_glx_> #endif // _USE_STD_VECTOR_ALGORITHMS
14:14:55 <_glx_> _FwdIt _Found = _First;
14:14:57 <_glx_> while (++_First != _Last) {
14:14:59 <_glx_> if (_DEBUG_LT_PRED(_Pred, *_First, *_Found)) {
14:16:34 <_glx_> but it looks like it tries to use `_Min_element_vectorized` as much as possible
14:17:48 <exceptik> the last part is more or less what gcc is doing
14:18:50 <exceptik> and i hate the mixture of spaces and tabs :<
14:19:08 <_jgr_> Assuming I've found the right part of the binary, what it is doing to implement that is major overkill for 4 values
14:20:55 <exceptik> so is the vectorized like... paralel?
14:22:06 <_jgr_> It's using 128 bit xmm registers, so you can do 4 comparisons in parallel
14:22:46 <exceptik> oh, nice optimization
14:23:01 <_jgr_> However this is not really useful if you have only one register's worth of values, as you can't do horizontal comparisons
14:26:01 <_glx_> yup it's the implementation
14:27:38 <exceptik> are you trying to improve performance for everyone or just for a selection of people?
14:28:14 <xarick> seems that openttd will shine on ryzen 9000 series
14:28:43 <_jgr_> I doubt any part of the OpenTTD code would usefully benefit from AVX512 instructions
14:29:44 <kuhnovic> I doubt any of the change made in Xarick's PR have a noticable effect on gameplay
14:31:17 <_jgr_> Still, GetTileZ/GetTileMaxZ are used very frequently, and avoiding the compiler pessimisation here does not seem unreasonable to me
14:37:36 <_glx_> but I didn't ran it ๐
14:40:54 <_glx_> oh actually it might be better as it's using _Min_element_unchecked directly
14:43:50 <johnfranklin> I want unbunch featuresโฆ
14:57:37 <andythenorth> johnfranklin: Are you in Woolaton?
16:21:31 <johnfranklin> andythenorth: south, across A52 of wollaton
16:22:40 <andythenorth> thought so, I didn't look up the bus numbers
16:22:59 <andythenorth> but I know the tree style and that you were near the A52 ๐
16:23:26 <johnfranklin> Is the tree style unique to A52?
16:25:12 <andythenorth> can't explain it ๐
16:25:18 <andythenorth> just a pattern my brain does
16:25:56 <johnfranklin> Or is Andy an alumni of UoN such that he remembers such things, maybe
16:26:28 <andythenorth> no, but I went to college in Bestwood Park
16:26:57 <andythenorth> had friends somewhere near where you are
17:18:52 <xarick> any other methods you'd like me to test
17:21:26 <xarick> took me about 6 * 2 * 3 * 3 minutes
17:32:28 <kuhnovic> You could look at the isolated performance of these implementations using a benchmarking library such a nanobench. Requires a bit of setup though.
17:38:20 <xarick> eh... the arctic test didn't generate that many rivers
17:39:40 <_glx_> artic checks altitude to place some industries
17:41:14 <_glx_> but that's not visible in your results, so ignore me
17:42:51 <xarick> generating industries was slow indeed
17:43:03 <xarick> maybe i should ... test it?
17:43:37 <xarick> temperate generated industries in an instant by comparison
17:43:38 *** NGC3982 has joined #openttd
17:43:48 <_glx_> no need, if there's improvement for some stuff, industries will be better too
17:48:14 <NGC3982> any new on the atari ip debacle?
17:49:56 <xarick> i just realised i wasn't testing with a static TicToc::State
17:50:16 <xarick> only TicToC::State, but it's okay, it was only 1 run every minute
18:16:00 <xarick> oh, only the last stage of planting trees checks GetTileZ
18:48:47 <xarick> linux pretty unaffected
18:49:51 <_jgr_> If it's not vectorised, it ought to be pretty easy for the optimiser to get rid of the intermediary pointer
18:50:27 <xarick> i changed both GetTileZ and GetTileMaxZ
18:50:58 <xarick> I also assumed the opposite of min_element is max_element
19:47:38 <xarick> gonna test for desyncs
19:47:52 <xarick> between windows and linux, if i'm able to join
19:51:21 <_jgr_> Non-deterministic ordering of that container cannot cause desyncs
19:52:52 <_jgr_> It is clear from the code and in any case it is very difficult to prove the absence of desyncs by testing
19:54:39 <xarick> I got 70k ships savegame
19:56:49 <xarick> seems to be only checking if an item is already in the container
19:58:40 <peter1138> kuhnovic: you've got approval from Xarick 9 months after merging, bet you are relieved.
19:59:33 <andythenorth> imagine if we had like...unit tests or smth
20:00:57 <andythenorth> imagine if we had a set of big savegames that some people sometimes test perf with ๐
20:01:20 <andythenorth> I might make one, and call it "Wentbourne"
20:01:25 <andythenorth> not sure why that name appeals, but it does
20:01:50 <_jgr_> Wentbourne exercises some paths very hard, and others not at all
20:02:14 <_jgr_> It's not terribly representative
20:05:32 <xarick> when I was using it to get a random tile to create a lake during river gen, i noticed it was not picking the same tiles between linux and windows
20:06:12 <_jgr_> Yes, it is an unordered container
20:09:11 <xarick> well time to stop the test
20:31:50 <xarick> more fun stuff to test
20:38:58 <xarick> const'ing stuff isn't exactly speeding things up
20:46:17 <johnfranklin> Is ship pathfinder still in a huge development? I thought it was done by 14.0
20:46:55 <peter1138> Everything is still in development.
20:47:04 <johnfranklin> But it seems a huge one
20:47:19 <johnfranklin> while 13.0 -> 14.0 ship pf is also a huge change
21:25:28 <xarick> foundations is a lot of code
21:33:51 <johnfranklin> Should I learn more c++ (and forget the promise the next day)
21:37:24 <johnfranklin> I canโt imagine Grand Central Main Line; i canโt imagine Victoria Shopping Centre and the Nottingham downtown area used to be train stations and tracks
21:38:57 <squirejames> Great Central. (Grand Central is the current TOC on the East Coast)
21:39:20 <squirejames> But ues its pretty mind bending. We had HS2, then we closed it in the 60s :/
21:53:20 <andythenorth> I'd never build it
21:58:34 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
22:05:31 <peter1138> ```terminate called after throwing an instance of 'std::bad_alloc'
22:05:31 <peter1138> what(): std::bad_alloc```
22:05:58 *** ChanServ sets mode: +v tokai
22:11:57 <andythenorth> is it a bad_alloc?
22:16:48 *** keikoz has quit IRC (Ping timeout: 480 seconds)
23:04:17 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
23:10:32 <peter1138> Hmm, maybe time for another squash & rebate.
23:10:55 <peter1138> Or, perhaps, sleep.
23:17:27 <xarick> > [2024-11-09 23:14:55] dbg: [misc:0] [GenerateTerrainPerlin] 1012246 us [avg: 1012246.0 us]
23:17:27 <xarick> > [2024-11-09 23:15:04] dbg: [misc:0] [CreateRivers] 8707872 us [avg: 8707872.0 us]
23:17:27 <xarick> > [2024-11-09 23:15:04] dbg: [misc:0] [GenerateClearTile] 91661 us [avg: 91661.0 us]
23:17:28 <xarick> > [2024-11-09 23:15:06] dbg: [misc:0] [GenerateTowns] 1831473 us [avg: 1831473.0 us]
23:17:28 <xarick> > [2024-11-09 23:15:07] dbg: [misc:0] [GenerateIndustries] 1684036 us [avg: 1684036.0 us]
23:17:30 <xarick> > [2024-11-09 23:15:07] dbg: [misc:0] [GenerateObjects] 14494 us [avg: 14494.0 us]
23:17:30 <xarick> > [2024-11-09 23:15:08] dbg: [misc:0] [GenerateTrees, PlaceTreeGroups] 1023057 us [avg: 1023057.0 us]
23:17:32 <xarick> > [2024-11-09 23:15:09] dbg: [misc:0] [GenerateTrees, PlaceTreesRandomly] 224276 us [avg: 224276.0 us]
23:17:32 <xarick> > [2024-11-09 23:15:14] dbg: [misc:0] [_GenerateWorld, RunTileLoop] 5852640 us [avg: 5852640.0 us]
23:17:34 <xarick> > [2024-11-09 23:15:45] dbg: [misc:0] [GenerateTerrainPerlin] 919507 us [avg: 919507.0 us]
23:17:36 <xarick> > [2024-11-09 23:15:48] dbg: [misc:0] [CreateDesertOrRainForest] 2996882 us [avg: 2996882.0 us]
23:17:36 <xarick> > [2024-11-09 23:15:53] dbg: [misc:0] [CreateRivers] 4227162 us [avg: 4227162.0 us]
23:17:38 <xarick> > [2024-11-09 23:15:53] dbg: [misc:0] [GenerateClearTile] 66331 us [avg: 66331.0 us]
23:17:38 <xarick> > [2024-11-09 23:15:55] dbg: [misc:0] [GenerateTowns] 2199400 us [avg: 2199400.0 us]
23:17:40 <xarick> > [2024-11-09 23:16:03] dbg: [misc:0] [GenerateIndustries] 7920450 us [avg: 7920450.0 us]
23:17:40 <xarick> > [2024-11-09 23:16:03] dbg: [misc:0] [GenerateObjects] 12628 us [avg: 12628.0 us]
23:17:42 <xarick> > [2024-11-09 23:16:04] dbg: [misc:0] [GenerateTrees, PlaceTreeGroups] 1046381 us [avg: 1046381.0 us]
23:17:42 <xarick> > [2024-11-09 23:16:05] dbg: [misc:0] [GenerateTrees, PlaceTreesRandomly] 1492242 us [avg: 1492242.0 us]
23:17:44 <xarick> > [2024-11-09 23:16:13] dbg: [misc:0] [_GenerateWorld, RunTileLoop] 7647568 us [avg: 7647568.0 us]
23:22:35 <xarick> **Arctic** (No suitable place for Farms):
23:22:35 <xarick> [2024-11-09 23:20:04] dbg: [misc:0] [GenerateTerrainPerlin] 1046847 us [avg: 1046847.0 us]
23:22:35 <xarick> [2024-11-09 23:20:13] dbg: [misc:0] [CreateRivers] 9339527 us [avg: 9339527.0 us]
23:22:35 <xarick> [2024-11-09 23:20:14] dbg: [misc:0] [GenerateClearTile] 74214 us [avg: 74214.0 us]
23:22:35 <xarick> [2024-11-09 23:20:16] dbg: [misc:0] [GenerateTowns] 2127492 us [avg: 2127492.0 us]
23:22:36 <xarick> [2024-11-09 23:21:21] dbg: [misc:0] [GenerateIndustries] 65242449 us [avg: 65242449.0 us]
23:22:36 <xarick> [2024-11-09 23:21:21] dbg: [misc:0] [GenerateObjects] 18807 us [avg: 18807.0 us]
23:22:38 <xarick> [2024-11-09 23:21:22] dbg: [misc:0] [GenerateTrees, PlaceTreeGroups] 830980 us [avg: 830980.0 us]
23:22:38 <xarick> [2024-11-09 23:21:22] dbg: [misc:0] [GenerateTrees, PlaceTreesRandomly] 519905 us [avg: 519905.0 us]
23:22:40 <xarick> [2024-11-09 23:21:30] dbg: [misc:0] [_GenerateWorld, RunTileLoop] 7752633 us [avg: 7752633.0 us]
23:24:18 <xarick> > [2024-11-09 23:23:08] dbg: [misc:0] [GenerateTerrainPerlin] 998876 us [avg: 998876.0 us]
23:24:18 <xarick> > [2024-11-09 23:23:17] dbg: [misc:0] [CreateRivers] 8520680 us [avg: 8520680.0 us]
23:24:18 <xarick> > [2024-11-09 23:23:17] dbg: [misc:0] [GenerateClearTile] 90374 us [avg: 90374.0 us]
23:24:18 <xarick> > [2024-11-09 23:23:19] dbg: [misc:0] [GenerateTowns] 1776866 us [avg: 1776866.0 us]
23:24:20 <xarick> > [2024-11-09 23:23:20] dbg: [misc:0] [GenerateIndustries] 1513450 us [avg: 1513450.0 us]
23:24:20 <xarick> > [2024-11-09 23:23:20] dbg: [misc:0] [GenerateObjects] 1 us [avg: 1.0 us]
23:24:22 <xarick> > [2024-11-09 23:23:20] dbg: [misc:0] [GenerateTrees, PlaceTreeGroups] 0 us [avg: 0.0 us]
23:24:22 <xarick> > [2024-11-09 23:23:20] dbg: [misc:0] [GenerateTrees, PlaceTreesRandomly] 232577 us [avg: 232577.0 us]
23:24:24 <xarick> > [2024-11-09 23:23:25] dbg: [misc:0] [_GenerateWorld, RunTileLoop] 4800876 us [avg: 4800876.0 us]
23:30:02 <dwfreed> my chat window is 39 lines, and all of them are your pastes right now
23:39:14 *** Tirili has quit IRC (Quit: Leaving)
23:59:05 *** silent_tempest has quit IRC (Quit: User went offline on Discord a while ago)
continue to next day โต