I don't think I'm going to be able to make any progress with this. I chopped away enough code so that it compiles with TinyGo. It works but it's even slower.
I was hoping to find a way of profiling the WASM code but I see DWARF support for WASM binaries is still a work in progress. https://github.com/golang/go/issues/33503 I don't know enough about WASM to be able to contribute to that issue unfortunately. Thanks to anyone who looked at this. On Friday, 3 September 2021 at 11:20:26 UTC+1 stephen.t....@gmail.com wrote: > To follow up on this I should clarify what my questions are: > > 1) How much of a performance drop (when compared to AMD64 for example) > should I expect when compiling to the WASM target? > > 2) Is there anything obvious I can do to counter any performance drops? > > And I suppose this is a non-Go question, but: > > 3) I know nothing about WASM beyond the bare minimum. How can I profile > and understand the compiled WASM binary? Is it possible to use the pprof > tool in some way? > > > On Fri, Sep 3, 2021 at 10:40 AM Stephen Illingworth < > stephen.t....@gmail.com> wrote: > >> >> >> >> On Fri, Sep 3, 2021 at 10:15 AM Brian Candler <b.ca...@pobox.com> wrote: >> >>> Could you explain a bit more about what you're comparing? >>> >>> - Is the wasm version running in a browser? If so, which one? Or have >>> you got a way to run wasm directly on the host (in which case, what is it)? >>> >> >> Running it in Firefox (78.13.0esr) and Chromium (92.0.4515.159) >> >> >>> - How is the linux/amd64 version running, if it's not talking to a >>> DOM-type environment? If the native version is still using syscall/js, >>> then how is it doing so? Or is the native version in a different repo? >>> >> - By "the parent emulator project" do you just mean web2600 itself? >>> >> >> Web2600 is using the emulation core of the parent project >> >> https://github.com/JetSetIlly/Gopher2600 >> >> The parent project runs on the desktop. It currently uses SDL and OpenGL >> etc. but it is designed to allow different methods of presentation. >> >> Web2600 is using the core of the emulator (ie. the non-presentation >> parts) and so doesn't use SDL or OpenGL. >> >> For presentation, the television package in the core emulation allows you >> to register "PixelRenderers". So Web2600 adds itself as a pixel renderer. >> The implemented SetPixels(), NewFrame() (etc.) functions will then talk to >> the DOM as appropriate. >> >> The web version works but is just exceedingly slow by comparison. >> >> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/6bb486eb-7481-4356-94cd-29c365c02416n%40googlegroups.com.