Re: [go-nuts] Let Go also support manual memory management, a good or bad idea?

2020-11-16 Thread Henry
There is a very little performance benefit to manual memory management with 
today's hardware. Someone mentioned games earlier. Many games are written 
in languages with GC. C# and Java are among the most popular languages for 
game development. A number of games are written in C++ but many developers 
end up writing their own GC. Other than in micro-benchmark, I don't see 
performance (as in speed) as a valid reason for having manual memory 
management.

Performance consistency is perhaps a more valid reason for having a manual 
memory management. If you are developing a mission-critical or a 
safety-critical application where you cannot afford to have GC millisecond 
pauses popping up during certain important chain of events, then you need 
to micromanage your memory. You need to make sure that your software 
performs exactly in the production environment as it would during 
development. If you add multi-cores, multi-threading and parallelism into 
the mix, it becomes even harder to fix performance consistency down to 
milliseconds. I am not sure how much calling runtime.GC would help in these 
scenarios, but Go is ill-equipped for such situations. To be fair, the 
market for such software is small and they usually rely on specialized 
hardware which makes the ubiquitous C hard to beat.

It is good to have manual memory management in Go, but it is not essential. 
It is better to direct the time and energy towards improving the Go 
compiler and its generated code.
On Monday, November 16, 2020 at 9:20:40 PM UTC+7 Ian Lance Taylor wrote:

> On Mon, Nov 16, 2020 at 5:49 AM tapi...@gmail.com  
> wrote:
> >
> > @Ian
> > How about forbidding manual allocated memory references normal pointers?
>
> I suppose I don't understand how to do that without being either
> memory unsafe or being unexpectedly slow.
>
> (If it's OK to be memory unsafe, then I don't think Go would be the
> preferred language. Go provides hooks to permit unsafe memory use,
> but it doesn't make them particularly easy to use. That is
> intentional and I don't think we're going to change that.)
>
> Ian
>
>
>
> > On Sunday, November 15, 2020 at 9:23:54 PM UTC-5 Ian Lance Taylor wrote:
> >>
> >> On Sun, Nov 15, 2020 at 5:38 PM tapi...@gmail.com  
> wrote:
> >> >
> >> > For example, by adding two new built-in functions: alloc and free, 
> garbage collector will ignore the memory allocated by alloc. The memory 
> allocated by alloc must be freed by calling the free function manually.
> >> >
> >> > This would relieve the burden of GC for some Go programs (such as 
> games).
> >>
> >> I think this is a misunderstanding of where GC time goes. If you can
> >> store a normal Go pointer in memory allocated using the new alloc
> >> function, then memory allocated by alloc must still be scanned by the
> >> GC.
> >>
> >> Ian
> >
> > --
> > 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...@googlegroups.com.
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/21159b26-4a56-455d-9665-b4f1eeaf8f33n%40googlegroups.com
> .
>

-- 
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/8d6e60db-976a-4d62-b760-3e2497b66aacn%40googlegroups.com.


Re: [go-nuts] Let Go also support manual memory management, a good or bad idea?

2020-11-16 Thread Ian Lance Taylor
On Mon, Nov 16, 2020 at 5:49 AM tapi...@gmail.com  wrote:
>
> @Ian
> How about forbidding manual allocated memory references normal pointers?

I suppose I don't understand how to do that without being either
memory unsafe or being unexpectedly slow.

(If it's OK to be memory unsafe, then I don't think Go would be the
preferred language.  Go provides hooks to permit unsafe memory use,
but it doesn't make them particularly easy to use.  That is
intentional and I don't think we're going to change that.)

Ian



> On Sunday, November 15, 2020 at 9:23:54 PM UTC-5 Ian Lance Taylor wrote:
>>
>> On Sun, Nov 15, 2020 at 5:38 PM tapi...@gmail.com  wrote:
>> >
>> > For example, by adding two new built-in functions: alloc and free, garbage 
>> > collector will ignore the memory allocated by alloc. The memory allocated 
>> > by alloc must be freed by calling the free function manually.
>> >
>> > This would relieve the burden of GC for some Go programs (such as games).
>>
>> I think this is a misunderstanding of where GC time goes. If you can
>> store a normal Go pointer in memory allocated using the new alloc
>> function, then memory allocated by alloc must still be scanned by the
>> GC.
>>
>> Ian
>
> --
> 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/21159b26-4a56-455d-9665-b4f1eeaf8f33n%40googlegroups.com.

-- 
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/CAOyqgcXF%2B6g8%2BphFYaJ9sR3Y4a-yMsWhhGGrbnUx8h2Ee9vN5Q%40mail.gmail.com.


Re: [go-nuts] Let Go also support manual memory management, a good or bad idea?

2020-11-16 Thread tapi...@gmail.com
@kortschak
I think there are many benefits by using a pure Go implementation than a 
CGO one.
It would be even better to reuse/expose the internal tcmalloc.

@Ian
How about forbidding manual allocated memory references normal pointers?

On Sunday, November 15, 2020 at 9:23:54 PM UTC-5 Ian Lance Taylor wrote:

> On Sun, Nov 15, 2020 at 5:38 PM tapi...@gmail.com  
> wrote:
> >
> > For example, by adding two new built-in functions: alloc and free, 
> garbage collector will ignore the memory allocated by alloc. The memory 
> allocated by alloc must be freed by calling the free function manually.
> >
> > This would relieve the burden of GC for some Go programs (such as games).
>
> I think this is a misunderstanding of where GC time goes. If you can
> store a normal Go pointer in memory allocated using the new alloc
> function, then memory allocated by alloc must still be scanned by the
> GC.
>
> Ian
>

-- 
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/21159b26-4a56-455d-9665-b4f1eeaf8f33n%40googlegroups.com.


Re: [go-nuts] Let Go also support manual memory management, a good or bad idea?

2020-11-15 Thread Ian Lance Taylor
On Sun, Nov 15, 2020 at 5:38 PM tapi...@gmail.com  wrote:
>
> For example, by adding two new built-in functions: alloc and free, garbage 
> collector will ignore the memory allocated by alloc. The memory allocated by 
> alloc must be freed by calling the free function manually.
>
> This would relieve the burden of GC for some Go programs (such as games).

I think this is a misunderstanding of where GC time goes.  If you can
store a normal Go pointer in memory allocated using the new alloc
function, then memory allocated by alloc must still be scanned by the
GC.

Ian

-- 
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/CAOyqgcUbWcx-9ge-QXTFEG5xSNWTcDwk77Bxf%3D2KDGKFpe4T5w%40mail.gmail.com.


Re: [go-nuts] Let Go also support manual memory management, a good or bad idea?

2020-11-15 Thread 'Dan Kortschak' via golang-nuts
This can already be done using C.malloc and C.free. You won't have
access to map types using a Cgo allocator, but then you wouldn't if
you had to allocate using built-ins either.

On Sun, 2020-11-15 at 17:37 -0800, tapi...@gmail.com wrote:
> For example, by adding two new built-in functions: alloc and free,
> garbage collector will ignore the memory allocated by alloc. The
> memory allocated by alloc must be freed by calling the free function
> manually.
> 
> This would relieve the burden of GC for some Go programs (such as
> games).




-- 
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/f24b2a031553e63231cfb156ad6ee43fd86c7687.camel%40kortschak.io.


[go-nuts] Let Go also support manual memory management, a good or bad idea?

2020-11-15 Thread tapi...@gmail.com

For example, by adding two new built-in functions: alloc and free, garbage 
collector will ignore the memory allocated by alloc. The memory allocated 
by alloc must be freed by calling the free function manually.

This would relieve the burden of GC for some Go programs (such as games).

-- 
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/17cc83a9-83c0-4878-abcb-30998299d1ecn%40googlegroups.com.