csdn原创谢绝转载
简介
现在没有AI编程工具,效率会打一个折扣,如果还没有,赶紧装起来.
-  
GitHub Copilot是OpenAi与github等共同开发的的AI辅助编程工具,基于ChatGPT驱动,功能强大,这个没人怀疑,看它的价格就知道了,最开始是10美元1个月,后面好像涨到20美元了.
我个人给它起了个嘴强王者的称号,就是动动嘴就能实现代码. -  
Codeium是一款免费的Ai辅助编程工具,支持70多种编程语言,插件支持40多种编辑器.功能也挺强大的,关键免费的,
我称赞它为白Piao党们的编程秘书.
其他文章
AndroidStudio上安装Codeium方法.
Android Studio安装AI编程助手Github Copilot 
环境
- 测试使用的是Android Studio, Codeium要在VsCode上支持对话,这里只简单对比编程的功能.
 - 语言Java
 
代码对比
在同一个Android Studio上,书写相似的简单代码,得到补全代码.然后对比二者表现.
 代码尽量挑选平常会用到的公共函数.
Copilot
// 作者:帅得不敢出门
public class Copilot {
    // 用递归实现斐波那契数列
    public static int fibonacci(int n) {
        if (n <= 1) return n;
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
    public void writeFile(String file, String content) {
        try {
            FileWriter fw = new FileWriter(file);
            fw.write(content);
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    // 手动输入参数int dp后实现
    public int dp2px(int dp) {
        return (int) (dp * 3.0f + 0.5f);
    }
    // 手动输入Context参数
    public int dpToPx(Context context, int dp) {
        return (int) (dp * context.getResources().getDisplayMetrics().density + 0.5f);
    }
    // 实现获取最前端的Activity名称的函数
    // 输入上面这行,copilot无任何提示
    public String getTopActivity(Context context) {
        return context.getClass().getSimpleName();
    }
    public boolean isAppForeground(Context context, String packageName) {
        return packageName.equals(getTopActivity(context));
    }
    public boolean isAppSystem(Context context, String packageName) {
        return context.getPackageManager().getLaunchIntentForPackage(packageName) == null;
    }
    public int getStatusBarHeight(Context context) {
        int result = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height",
                "dimen", "android");
        if (resourceId > 0) result = context.getResources().getDimensionPixelSize(resourceId);
        return result;
    }
    public int getScreenWidth(Context context) {
        return context.getResources().getDisplayMetrics().widthPixels;
    }
    public String bytes2HexString(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte aByte : bytes) {
            String hex = Integer.toHexString(aByte & 0xFF);
            if (hex.length() < 2) sb.append(0);
            sb.append(hex);
        }
        return sb.toString();
    }
    public boolean isPhoneNumber(String phoneNumber) {
        return phoneNumber.matches("^1[3-9]\\d{9}$");
    }
    public String getDate() {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(new Date());
    }
    public String getCurrentTime() {
        return new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
    }
    public static int getTodayOfWeek() {
        return new Date().getDay();
    }
    public static int getDayOfWeek(Date date) {
        return date.getDay();
    }
    public static boolean isChinese(String str) {
        return str.matches("[\\u4e00-\\u9fa5]+");
    }
    /*
    这个会编译不过
    public boolean isScreenOn(Context context) {
        return context.getSystemService(Context.POWER_SERVICE).isScreenOn();
    }
     */
    public void setBrightness(Context context, int brightness) {
        android.provider.Settings.System.putInt(context.getContentResolver(),
                android.provider.Settings.System.SCREEN_BRIGHTNESS, brightness);
    }
    public String getAndroidId(Context context) {
        return android.provider.Settings.Secure.getString(context.getContentResolver(),
                android.provider.Settings.Secure.ANDROID_ID);
    }
}
 
Codeium
// 作者:帅得不敢出门
public class Codeium {
    // 用递归实现斐波那契数列
    public int fib(int n) {
        if (n == 0) {
            return 0;
        } else if (n == 1) {
            return 1;
        } else {
            return fib(n - 1) + fib(n - 2);
        }
    }
    // 输入到writeFile(会自动提示出参数及实现
    public void writeFile(String fileName, String content) {
        try {
            File file = new File(fileName);
            FileWriter fw = new FileWriter(file);
            fw.write(content);
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public int dp2px(int dp) {
        return (int) (dp * 0.5f + 0.5f);
    }
    // 要手动输入Context参数
    public int dpToPx(Context context, int dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());
    }
    public String getTopActivity(Context context) {
        return "com.benew.testm";
    }
    public boolean isAppForeground(Context context, String packageName) {
        return false;
    }
    public boolean isAppSystem(Context context, String packageName) {
        return packageName.equals("com.android.systemui");
    }
    public int getStatusBarHeight(Context context) {
        return 0;
    }
    // 这个要手动输入Context参数
    public int getScreenWidth(Context context) {
        return context.getResources().getDisplayMetrics().widthPixels;
    }
    public String bytes2HexString(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            String hex = Integer.toHexString(0xFF & bytes[i]);
            if (hex.length() == 1) {
                sb.append('0');
            }
            sb.append(hex.toUpperCase());
        }
        return sb.toString();
    }
    public boolean isPhoneNumber(String phoneNumber) {
        // 默认是提示return false
        //return false;
        // 要手动先输入phoneNumber.matches(
        return phoneNumber.matches("^[1][3,4,5,7,8][0-9]{9}$");
    }
    public String getDate() {
        return new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date());
    }
    public String getCurrentTime(){
        return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date());
    }
    public static int getTodayOfWeek(){
        Calendar cal = Calendar.getInstance();
        return cal.get(Calendar.DAY_OF_WEEK);
    }
    public static int getDayOfWeek(Date date){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.DAY_OF_WEEK);
    }
    public static boolean isChinese(String str){
        return str.matches("[\\u4E00-\\u9FA5]+");
    }
    public boolean isScreenOn(Context context){
        return false;
    }
    public void setBrightness(Context context, int level){
        // 这里如果不主动输入codeium会无提示, 需要手动输入android.provider
        android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, level);
    }
    public String getAndroidId(Context context){
        // 这里codeium要手动输入return android.provider 才会提示, 否则会提示成return null
        return android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
    }
}
 
结果
代码部分对比图
 
由于工具,语言,代码量都较单一,无法以偏盖全,只是做个简单比较,另外就是输入的代码也会干扰到补全,
 个人输入的与工具本身理解不一样也会导致结果差异.
- 斐波那契数列 Copilot会更简洁些,二者都未有异常处理,比如溢出,输入负数.
 - public void writeFile(String file, String content)差不多,Copilot少一行.
 - public int dp2px(int dp)结果不同,一个是剩0.5,一个是0.3都有问题, 需要参数中手动输入Context context参数才行.
 - public int dpToPx(Context context, int dp) 因为手动输入Context参数结果正确,个人更喜欢Codeium不需要关注运算.
 - public String getTopActivity(Context context)二者都不正确.
 - public boolean isAppForeground(Context context, String packageName) 二者都不正确.
 - public boolean isAppSystem(Context context, String packageName)二者都不正确.
 - public int getStatusBarHeight(Context context)Copilot表现比较好.
 - public int getScreenWidth(Context context)结果一样.
 - public String bytes2HexString(byte[] bytes)差不多.
 - 获取时间的字符串的函数,format的格式需要自己微调.
 - public boolean isPhoneNumber(String phoneNumber),Codeium需要手动输入部分实现,Copilot表现好.
 - getTodayOfWeek() Copilot用到过期的函数,Codeium表现好些.
 - public static boolean isChinese(String str)二都结果一样.
 - 设备屏幕亮度setBrightness,获取AndroidId getAndroidId, Codeium都需要手动输入部分实现,否则补全不了,Copilot表现好.
 
单纯从以上对比,Copilot综合实力更强,收费的,开通麻烦点,原因你懂的.
 Codeium也能解决大部分场景,它是免费的,免费的,免费的,重要的事情说三遍,开通方便.
 最后说一下,土豪上Copilot,其他上Codeium.
 作者:帅得不敢出门 CSDN原创谢绝转载



















