我在Go做了一些实验,我发现了一些非常奇怪的东西.当我在计算机上运行以下代码时,它会在约0.5秒内执行.
package main
import (
"fmt"
"runtime"
"time"
)
func waitAround(die chan bool) {
<- die
}
func main() {
var startMemory runtime.MemStats
runtime.ReadMemStats(&startMemory)
start := time.Now()
cpus := runtime.NumCPU()
runtime.GOMAXPROCS(cpus)
die := make(chan bool)
count := 100000
for i := 0; i < count; i++ {
go waitAround(die)
}
elapsed := time.Since(start)
var endMemory runtime.MemStats
runtime.ReadMemStats(&endMemory)
fmt.Printf("Started %d goroutines\n%d CPUs\n%f seconds\n",
count, cpus, elapsed.Seconds())
fmt.Printf("Memory before %d\nmemory after %d\n", startMemory.Alloc,
endMemory.Alloc)
fmt.Printf("%d goroutines running\n", runtime.NumGoroutine())
fmt.Printf("%d bytes per goroutine\n", …Run Code Online (Sandbox Code Playgroud) 我试图找出用于c中的变量的内存何时被释放.举个例子,什么时候i在下面的代码片段中释放整数?
int function()
{
int i = 1;
// do some things
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用这个SO问题作为需要反转字符串的程序的一部分.我遇到的问题是我似乎无法使功能发挥作用.这是我的代码:
int main(int argc, char *argv[]){
char *test = "Testing";
fputs(test, stdout);
fputs(reverse_string(test), stdout);
}
char* reverse_string(char *str){
char temp;
size_t len = strlen(str) - 1;
size_t i;
size_t k = len;
for(i = 0; i < (len +1)/2; i++){
temp = str[k];
str[k] = str[i];
str[i] = temp;
k--;
}
return str;
}
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误 conflicting types for 'reverse_string'
编辑:对于任何想知道这里的人来说,代码是有效的.请参阅@ chux的答案以获得解释.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char* reverse_string(char *str){
char temp;
size_t len = strlen(str) - 1; …Run Code Online (Sandbox Code Playgroud) 我遇到了goroutines的问题.为什么这段代码在~125ms内执行(注意顺序执行):
package main
import (
"os/exec"
"time"
"fmt"
)
func main() {
cmd := exec.Command("lessc", "--yui-compress", "test.less")
n := 2000
start := time.Now()
for i := 0; i < n; i++ {
cmd.Run()
}
finish := time.Now()
fmt.Printf("Program took %v to run\n", finish.Sub(start))
}
Run Code Online (Sandbox Code Playgroud)
当此代码大约需要20秒时(使用goroutines并发执行):
package main
import (
"os/exec"
"time"
"fmt"
)
func main() {
cmd := exec.Command("lessc", "--yui-compress", "test.less")
ch := make(chan bool)
n := 2000
start := time.Now()
for i := 0; i < n; i++ { …Run Code Online (Sandbox Code Playgroud)