# Xojo1BRC (Xojo One Billion Row Challenge)

**URL:** <https://forum.xojo.com/t/xojo1brc-xojo-one-billion-row-challenge/82844>\
**Category:** General\
**Created:** [October 13, 2024, 4:37pm UTC](https://forum.xojo.com/t/xojo1brc-xojo-one-billion-row-challenge/82844 "2024-10-13T16:37:36Z")\
**Posts on this page:** 1\
**Showing post:** 14

<div class="post-metadata">

**Author:** ![Mike\_D](https://forum.xojo.com/user_avatar/forum.xojo.com/mike_d/32/266_2.png) [@Mike\_D](https://forum.xojo.com/u/Mike_D)\
**Post date:** [October 15, 2024, 3:45pm UTC](https://forum.xojo.com/t/xojo1brc-xojo-one-billion-row-challenge/82844/14 "2024-10-15T15:45:58Z")

</div>

Testing notes:

- The project has Build Optimization Level set to Moderate. @Kem_Tekinay reported, and I confirm that on Aggressive it never seems to compile [Edit: it takes an hour+ to compile, and runs more slowly] Kem reported this: [https://tracker.xojo.com/xojoinc/xojo/-/issues/77604](https://tracker.xojo.com/xojoinc/xojo/-/issues/77604)
- A quick way to optimize is to run the built app, open ActivityMonitor.app, and take a sample of the process. You’ll get a stack trace sample with the methods taking the longest at the top, as in this example:

> **Sample**
>
> ```auto
> Call graph:
> 2330 Thread_10814897 DispatchQueue_1: com.apple.main-thread (serial)
> + 2330 start (in dyld) + 1909 [0x7ff80e6c2345]
> + 2330 main (in Xojo1BRC) + 19 [0x10219b803]
> + 2330 _Main (in Xojo1BRC) + 458 [0x10219be1a]
> + 2330 REALbasic._RuntimeRun (in Xojo1BRC) + 19 [0x1020ce273]
> + 2330 RuntimeRun (in rbframework.dylib) + 53 [0x1035382df]
> + 2330 CallFunctionWithExceptionHandling(void (*)()) (in rbframework.dylib) + 134 [0x1035a01b1]
> + 2330 ConsoleApplication._CallFunctionWithExceptionHandling%%o<ConsoleApplication>p (in Xojo1BRC) + 184 [0x1020a1888]
> + 2330 CallConsoleApplicationRunEventHelper() (in rbframework.dylib) + 325 [0x1034c3db8]
> + 2330 App.Event_Run%i8%o<App>A1s (in Xojo1BRC) + 9630 [0x10213dece]
> + 2330 Baseline.Process%%o<FolderItem>o<FolderItem> (in Xojo1BRC) + 226 [0x102186ad2]
> + 675 Baseline.ProcessIntoDictionary%o<Dictionary>%o<FolderItem> (in Xojo1BRC) + 1924 [0x102182314]
> + ! 670 String.$ToDouble%f8%s (in Xojo1BRC) + 22 [0x101ddeff6]
> + ! : 662 String.$CDbl%f8%s (in Xojo1BRC) + 22 [0x101ddd796]
> + ! : | 305 runCDbl (in rbframework.dylib) + 284 [0x10359c06c]
> + ! : | + 305 replaceAll(string, string, string) (in rbframework.dylib) + 78 [0x10359a480]
> + ! : | + 75 StringOpsClassic::ReplaceAllText(StringStorageBase*, StringStorageBase*, StringStorageBase*) (in rbframework.dylib) + 932 [0x10360ddde]
> + ! : | + ! 34 ??? (in rbframework.dylib) load address 0x1032f6000 + 0x3138d5 [0x1036098d5]
> 
> ```

From this you can see the hottest method is in the `String.ToDouble()` method, which appears to have a lot of string processing inside it (including a call to `ReplaceAllText` which perhaps should be reported as a separate bug?)

---

_[View the full topic](https://forum.xojo.com/t/xojo1brc-xojo-one-billion-row-challenge/82844)._
